刪除鏈表中等于給定值 val 的所有節點。
示例:
輸入: 1->2->6->3->4->5->6, val = 6
輸出: 1->2->3->4->5
這道題目,只需判斷節點的值是否與給出的值相等,刪除即可。不過需要考慮到,刪除頭結點的問題,需要一個頭指針來指向頭結點;還需知道,每個節點的前驅,方便刪除后的連接。
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;
}