题目描述:
删除链表中等于给定值 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;
* };
*/
思路分析:
1.创建一个结果链表,作为最后的结果返回
2.遍历原来的链表,如果当前节点保存的值和要删除的值不相等,把该节点保存到结果链表中
3.结果链表的最后一个节点的next要指向NULL
代码示例:
struct ListNode* removeElements(struct ListNode* head, int val)
{
struct ListNode* pCur = head;
struct ListNode* result = NULL;//结果链表的第一个节点
struct ListNode* last = NULL;//结果链表的最后一个节点
while (pCur != NULL)
{
if (pCur->val != val)
{
if (last==NULL)
{
result = last=pCur;
}
else
{
last->next=pCur;
last = pCur;
}
}
pCur = pCur->next;
}
if (last != NULL)
{
last->next = NULL;
}
return result;
}