刪除鍊錶中的重複節點

2022-08-23 16:15:10 字數 568 閱讀 1811

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。 例如,鍊錶1->2->3->3->4->4->5 處理後為 1->2->5。還有一種情況是1->1->1->1,那麼返回的應該是null。

思路

因為鍊錶是排序後的,所以重複的結點都是相鄰的。為了避免出現頭結點是重複的情況,我們可以定義乙個新的頭結點,指向舊的頭結點,它的值為舊的頭結點的值減1。這樣頭結點肯定不是重複的,返回的時候只需要返回新的頭結點的next就行了。其次還需要定義乙個pre指向新的頭結點,p指向舊的頭結點。然後依次遍歷鍊錶,查詢與結點p的值重複的結點並刪除。

public

listnode deleteduplication(listnode phead)

else

}//2、說明p的值和p.next的值不等,又因為是排序鍊錶,那麼說明pre、p、p.next的值肯定都不同,

//然後就可以把pre指向p,p指向p的next

else

}return

newhead.next;

}

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

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

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

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

刪除鍊錶中重複的節點

題目描述 在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 這個題目首先考慮到頭結點也可能是重複的節點,所以需要設定乙個頭結點之前的節點。之後需要3個指標 pre,cur和next struct...