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

一、問題描述spa

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

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

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

 

二、問題分析rem

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

爲了方便處理head節點,能夠人爲建立一個新節點,新節點的next指向head。List

特例是,輸入爲空時,直接返回NULL。遍歷

 

三、代碼鏈表

 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     }
相關文章
相關標籤/搜索