劍指offer c 刪除重複的鍊錶節點

2021-10-06 15:54:40 字數 1177 閱讀 1233

題目:

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

題目分析:

該題主要需要考慮三種情況,

(1)1->2->3->3->4->4->5    連續重複節點

(2)2->2->3->3->4->4->5    頭節點連續需要刪除

(3)1->2->3->3->4->4->4    尾節點重複需要刪除

基於上述情況,有可能需要刪除頭結點,所以我們需要定義乙個臨時節點(temp_node)連入該鍊錶,同時結合雙指標。先初始化三個指標,temp_node->next = head; pre = cur = temp_node;為解決連續重複問題,我們先遍歷到重複節點的最後乙個節點,然後下移乙個節點,再次判斷是否重複,不重複的話,在賦給pre,同時pre = pre->next; 直到cur為空,結束。

最後**:

#include #include #include #include #include #include #include #include #include #include #include using namespace std;

struct node

;class myclass

back = back->next;

if (back != null && back->next != null && back->val == back->next->val)

cur->next = back;

cur = cur->next;

} return temp_node->next;

}};int main()

; node node5 = ;

node node4 = ;

node node3 = ;

node node2 = ;

node node1 = ;

struct node* res_node = my_class.delete_r_node(&node1);

while (res_node != null)

system("pause");

return 0;

}

刪除鍊錶的結點(劍指offer) C語言

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

劍指offer(C ) 鍊錶中環的入口結點

如下 struct listnode 思路 設定兩個指標p1和p2,如果鍊錶中有n個結點,指標p1先向前移動n個結點,然後兩個指標以相同速度向前移動,當兩個指標相遇的結點就是環的入口結點。如何統計環中結點個數n 設定一快一慢兩個指標pslow和pfast,如果鍊錶中有環,兩指標必定在環中某個結點出相...

劍指offer 鍊錶 刪除鍊錶中的重複節點

題目在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 思路分析 思路一 使用linkedlist儲存不重複節點,重構鍊錶 分析評價 這個方法是乙個比較直接且容易想到的方法,使用時只要注意一些情況...