鍊錶演算法 刪除重複節點

2021-10-09 01:14:23 字數 1103 閱讀 4066

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

public

class

listnode

}public listnode deleteduplication

(listnode phead)

listnode first=

newlistnode(0

);//新建立乙個頭節點,作為最後返回的頭節點

listnode ppre,pcur;

first.next=phead;

ppre=first;

//ppre指向當前的節點

pcur=first.next;

//pcur指向需要判斷是否重複節點的節點,用於搜尋重複的節點

while

(pcur!=null)

ppre.next=pcur.next;

pcur=pcur.next;

//刪除重複節點

//ppre此時為重複節點的前乙個節點,pcur此時為最後乙個重複的節點

//將當前ppre節點的下乙個節點指向pcur的下乙個節點,然後將搜尋節點往後移動一位

}else

}//返回頭節點

return first.next;

}

輸入兩個鍊錶,找出它們的第乙個公共結點。(注意因為傳入資料是鍊錶,

所以錯誤測試資料的提示是用其他方式顯示的,保證傳入資料是正確的)

public listnode findfirstcommonnode

(listnode phead1,listnode phead2)

while

(p2!=null)

p2=p2.next;

}return null;

}

public listnode findfirstcommonnode

(listnode phead1,listnode phead2)

return p1;

}

刪除鍊錶的重複節點

思路 就是找到不重複出現的節點,然後連線到新鍊錶上面 反思 在連線節點到新鍊錶的時候,每次都要把尾部節點的next指標設定為空!以防當前尾部節點真的是最後乙個節點卻沒給next設定指標域為空 struct listnode class solution listnode temp pnode 此時指...

鍊錶的重複節點刪除

題目一 力扣83 刪除重複的節點 保留重複的節點 給定乙個排序鍊錶,刪除所有重複的元素,使得每個元素只出現一次。示例 1 輸入 1 1 2 輸出 1 2 示例 2 輸入 1 1 2 3 3 輸出 1 2 3 解法1 使用set去重,思路很簡單。時間複雜度o n 空間複雜度o n public sta...

鍊錶(刪除重複的節點)

題目要求 在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 題解 先判空和長度是否為一 定義兩個指標和乙個傀儡節點 用cur當游標遍歷鍊錶,當cur的值和cur.next的值相等時,prev不動...