AcWing 29 刪除鍊錶中重複的節點

2021-09-11 21:36:30 字數 730 閱讀 9149

題目描述:

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留。

樣例1

輸入:1->2->3->3->4->4->5

輸出:1->2->5

樣例2

輸入:1->1->1->2->3

輸出:2->3

分析:

本題與一般去重不同之處是:對於重複的元素,乙個不留。於是很可能刪除後,鍊錶為空。為了防止頭結點被刪,我們需要定義乙個虛擬頭結點指向head(其實定義乙個頭指標即可)。之後,依靠指標不斷的比較,我採用的是三指標,當然也可以削減為雙指標。遇見重複的就刪掉,接上鏈,否則,指標右移即可。

注意:只要指標右移了,而且要訪問其val或者next,則使用前必須判空,否則會造成段錯誤。

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

if(q == null) break;

while(q != null && q->val == t->val)

p->next = q;

t = q;

if(q != null) q = q->next;

}return vhead->next;

}};

AcWing 29 刪除鍊錶中重複的節點

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留。樣例1輸入 1 2 3 3 4 4 5 輸出 1 2 5樣例2 輸入 1 1 1 2 3 輸出 2 3先建立乙個dummy節點,然後cur等於dummy節點,pre節點等於head。然後先判斷是否head的next節點為...

刪除重複鍊錶

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 class solution listnode newhead listnode malloc sizeof listnode newhead ...

鍊錶 刪除鍊錶中重複的節點

刪除鍊錶中重複的節點 方法一 採用遞迴的方法,但這種方法在鍊錶無重複節點時效率不高 function deleteduplication phead if phead.val phead.next.val return deleteduplication node 採用遞迴的方法從下乙個不重複的點開...