题目:删除链表中等于给定值 val 的所有节点。
示例:
输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5
解题思路:
1.不带头节点的链表,要首先处理头节点;
2.要判断头节点是否为空,否则会报错,显示:访问空结点。
代码:
struct ListNode* removeElements(struct ListNode* head, int val){
struct ListNode *p, *pre; //不带头结点
while(head) //处理头节点
{
if(head->val == val)
{
head = head->next;
}
else
break;
}
if(head != NULL) //防止访问空指针
{
pre = head;
p =pre->next;
while(p)
{
if(p->val == val)
{
pre->next = p->next;
p = pre->next;
}
else
{
pre = p;
p = pre->next;
}
}
}
return head;
}