1. 题目描述
删除链表中等于给定值 val 的所有节点。
示例:
输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4->5
2. 代码实现
直接用上一题删除链表中的结点的方法,无法处理删除最后一个结点的情况。所以采用添加临时头结点的方法。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* removeElements(struct ListNode* head, int val) {
struct ListNode* newhead = (struct ListNode*)malloc(sizeof(struct ListNode));
newhead->next = head;
struct ListNode* p = newhead;
while(p->next) {
if(p->next->val == val)
p->next = p->next->next;
else
p = p->next;
}
return newhead->next;
}