标签:NPU 头结点 else node soft div return sof nod
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; } };
【LeetCode】28.Linked List— Remove Linked List Elements删除链表元素
标签:NPU 头结点 else node soft div return sof nod
原文地址:https://www.cnblogs.com/hu-19941213/p/11429735.html