刪除鏈表中等于給定值 val 的所有節(jié)點世舰。
示例:
輸入: 1->2->6->3->4->5->6, val = 6
輸出: 1->2->3->4->5
這道題目惜论,只需判斷節(jié)點的值是否與給出的值相等,刪除即可赠叼。不過需要考慮到擦囊,刪除頭結(jié)點的問題,需要一個頭指針來指向頭結(jié)點梅割;還需知道霜第,每個節(jié)點的前驅(qū),方便刪除后的連接户辞。
struct ListNode* removeElements(struct ListNode* head, int val) {
struct ListNode* s = (struct ListNode*)malloc(sizeof(struct ListNode));
s->next = head;
struct ListNode* p = s;
struct ListNode* q = s->next;
while(q){
if(q->val == val){
p->next = q->next;
}else{
p = q;
}
q = q->next;
}
return s->next;
}