问题描述
删除链表中等于给定值 val 的所有节点。
示例:
输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* removeElements(struct ListNode* head, int val) {
struct ListNode *nt=(struct ListNode*)malloc(sizeof(struct ListNode));
nt->next=head;
struct ListNode *t=nt;
while(t){
if(t->next==NULL){
break;
}
if(t->next->val==val){
struct ListNode *q=t->next;
t->next=q->next;
free(q);
continue;
}
t=t->next;
}
nt=nt->next;
return nt;
}
和No.83类似,增加一个无数据的头节点。