刪除鍊錶中重複的結點

2021-08-04 04:17:43 字數 852 閱讀 6231

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

題目分析:

刪除鍊錶中的結點要比較當前結點是否與前面結點和後面結點相同,只有兩個都不同的結點才保留。用pre儲存前乙個節點, cur儲存當前結點,cur->next則是後乙個結點。

如果當前結點只出現了一次,則將其保留。

思路還是比較簡單,但有幾點在coding中需要注意,

1)第乙個結點需要單獨判斷,因為他沒有前面結點。

2)因為第乙個結點可能是重複的,所以我們儲存方式採用形如 node->next的形式。即新建乙個節點node,讓其next指標指向當前結點。如果當前結點只出現一次,更新 node->next = cur; node = node->next; node->next = nullptr;

3)更新 pre結點和 cur結點需要注意。因為node->next = cur; node = node->next; node->next = nullptr;的關係,我們需要乙個臨時變數temp儲存cur->next,否則會被前面node的更新操作階段(因為node更新後,node->next= nullptr.)

4) pre更新是一步步向後移,不能跳躍。

/*

struct listnode

};*/

class solution

while (cur)

else

}else

else

}} return res->next;

}};

刪除鍊錶中重複的結點

題目描述 在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5。刪除鍊錶中重複的結點 author 過路的守望 public class duplicationnode 新建乙個節點指向頭結點 li...

刪除鍊錶中重複的結點

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 解法一 遞迴 public class listnode public class solution if phead.next.val phe...

刪除鍊錶中重複的結點

題目描述 在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5。注意原煉表頭節點的處理。public class listnode public class solution listnode h ...