leetCode題解之刪除單鏈表中指定的元素


1、問題描述

Remove all elements from a linked list of integers that have value val.

Example
Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6
Return: 1 --> 2 --> 3 --> 4 --> 5

給定一個單鏈表和一個數值,刪除單鏈表中數據域等於該數值的節點。

 

2、問題分析

遍歷一次鏈表,找到數據域等於給定數值的鏈表節點,然后刪除之。刪除鏈表的操作,就是被刪除鏈表節點的前驅節點直接指向其后繼節點,在C++ 中還要記得 delete被刪除的鏈表。

為了方便處理head節點,可以人為創建一個新節點,新節點的next指向head。

特例是,輸入為空時,直接返回NULL。

 

3、代碼

 1 ListNode* removeElements(ListNode* head, int val) {
 2         
 3         if(head == NULL)
 4             return NULL;
 5         
 6         ListNode FirstNode(0);
 7         FirstNode.next = head;
 8         
 9         ListNode* p = &FirstNode;
10         while(p != NULL)
11         {
12             ListNode* tmp = p->next;
13             if(tmp !=  NULL && tmp->val == val )
14             {
15                 p->next = tmp->next;
16                 delete tmp; 
17             }
18             else
19                 p= p->next;
20         }
21         
22         return FirstNode.next;
23         
24         
25     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM