LeetCode28.Linked List— Remove Linked List Elements删除链表元素
Posted hu-19941213
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode28.Linked List— Remove Linked List Elements删除链表元素相关的知识,希望对你有一定的参考价值。
Remove all elements from a linked list of integers that have value val.
Example:
Input: 1->2->6->3->4->5->6, val = 6
Output: 1->2->3->4->5
说到删除,首先想到定义两个指针,分别指向要被删除的结点和该结点的前驱结点。这里还需要考虑头结点是需要删除结点的特殊情况。
/** * Definition for singly-linked list. * struct ListNode * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) * ; */ class Solution public: ListNode* removeElements(ListNode* head, int val) ListNode*p=head; //定义前驱结点指针 if(p==NULL) return NULL; ListNode*q=p->next; //定义要删除的结点指针 while(1) if(q==NULL) //如果链表只有一个结点且头结点是要删除的结点 if(head->val==val) delete p; return NULL; else return head; else //如果链表不止一个结点 if(head->val==val) //头结点是要删除的结点 head=q; delete p; p=head; q=p->next; else if(q->val==val) //找到要删除的结点 p->next=q->next; delete q; q=p->next; else //没有要删除的结点,则一头后移。 p=p->next; q=p->next; return head; ;
以上是关于LeetCode28.Linked List— Remove Linked List Elements删除链表元素的主要内容,如果未能解决你的问题,请参考以下文章