面試題18 刪除鍊錶中重複節點

2021-08-21 09:13:15 字數 902 閱讀 9017

題目描述:在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。 例如,鍊錶1->2->3->3->4->4->5 處理後為 1->2->5

1.新建p1指標記錄新的不包含重複節點的鍊錶

2.指標p2遍歷原鍊錶,跳過重複的節點

3.將不重複的節點位址賦值給p1

新建指標p1作為不包含重複節點鍊錶的頭節點

p2遍歷原鍊錶,當p2指向的節點與下乙個節點沒有重複時,將p2所指向的節點賦值給p1,p1後移

如圖所示,1不等於2,所以將p1指向p2的節點

p2遍歷原鍊錶,當p2指向的節點與下乙個節點出現重複時,向後移動p2直到指向不重複節點,將不重複的節點賦值給p1

p2 = p2->next;//p2跳過重複串中的最後乙個重複節點

//防止鍊錶尾出現重複,p2==null,程式跳出will迴圈,而p1沒有跳過尾部重複

p1->next = p2;

}else

}return head->next;//返回時要去除頭節

}

面試題18 刪除鍊錶的節點

給定單向鍊錶的頭指標和乙個要刪除的節點指標,定義乙個函式刪除該節點。思路 使用o 1 的方法來解決,將要刪除的的節點用下乙個節點來覆蓋就相當於是刪除了原節點。但有兩種特殊情況需要考慮,但鍊錶只有頭節點,即鍊錶只有乙個節點。二刪除的節點是尾節點,只用從頭for一遍 class listnode pub...

面試題18 刪除鍊錶的節點

題目描述 給定單向鍊錶的頭指標和乙個要刪除的節點的值,定義乙個函式刪除該節點。返回刪除後的鍊錶的頭節點。注意 此題對比原題有改動 示例 1 輸入 head 4,5,1,9 val 5 輸出 4,1,9 解釋 給定你鍊錶中值為 5 的第二個節點,那麼在呼叫了你的函式之後,該鍊錶應變為 4 1 9.示例...

面試題18 刪除鍊錶的節點

給定單向鍊錶的頭指標和乙個要刪除的節點的值,定義乙個函式刪除該節點。返回刪除後的鍊錶的頭節點。注意 此題對比原題有改動 示例 1 輸入 head 4,5,1,9 val 5 輸出 4,1,9 解釋 給定你鍊錶中值為 5 的第二個節點,那麼在呼叫了你的函式之後,該鍊錶應變為 4 1 9.示例 2 輸入...