刪除鍊錶中重複的結點

2021-09-23 13:39:30 字數 644 閱讀 9407

思路:

1、鍊錶為空

直接返回頭結點

2、鍊錶不為空:

1)只有兩個節點相等

2)有兩個以上節點相等,如:2-2-2-2-2-2:

設定乙個新的頭結點,它的下乙個指向頭結點;

設定乙個遍歷指標,遍歷鍊錶;

遍歷鍊錶,若指標當前值與下乙個相等,指標指向下乙個,直到找到不相等的位置。

此時新頭結點的作用就是代表當前指標的錢乙個節點,新頭結點直接連線到無相等值位置的指標。

返回新的鍊錶。

if not phead:

return none

p1=listnode(-1)

p1.next=phead

p2=phead

p3=p1

while(p2 and p2.next):

if p2.val ==p2.next.val:

val=p2.val

while p2 and p2.val==val:

p2=p2.next#只要p2和下乙個值相等,指標就前進

p3.next=p2

else:

p2=p2.next

p3=p3.next

return p1.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 題目分析 刪除鍊錶中的結點要比較當前結點是否與前面結點和後面結點相同,只有兩個都不同的結點才保留。用pre儲存前乙個節點,cur儲存當前結點,c...