鍊錶問題 無序鍊錶中刪除重複節點

2022-05-01 03:00:10 字數 748 閱讀 9624

question: write code to removeduplicatesfrom anunsortedlinked list.( from cracking the coding interview)

鍊錶使用以下結構

1

struct

linklistnode

2;

解法一:使用hash,即要求緩衝區。遍歷鍊錶,若不含該節點值,則加入hash表,否則跳過該節點。

c++好像沒有直接的hashtable~~實現有待學習!

解法二:不使用buffer,使用兩個指標,分別指向當前節點pcur和其前一節點ppre,遍歷pcur過程中,對每乙個pcur設定乙個指標runner從head開始檢查是否有和當前節點重複的節點,有則跳過並break(到當前節點最多有乙個重複的,因為若煉表中重複節點有多於1個,會在前面的節點中刪除),無重複則更新ppre 和pcur。

實現如下code:

1

void deletedups(linklistnode *head)

218 runner = runner->next;19}

20//

若當前沒重複,則更新ppre 和pcur

21if (runner ==pcur)

2226

}27 }

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

刪除鍊錶中重複的節點 方法一 採用遞迴的方法,但這種方法在鍊錶無重複節點時效率不高 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...