演算法練習篇之 刪除鍊錶中重複的結點

2021-09-27 03:24:23 字數 1318 閱讀 9620

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

本題我們需要借助兩個指標來幫助我們完成題目,首先建立乙個新的頭節點head,並讓head指向原來鍊錶的頭節點,目的是為了防止出現鍊錶第乙個節點就出現重複的情況。隨後,需要建立兩個指標pre和lastpre指標的作用就是記錄當前沒有出現重複的節點,而last指標則負責尋找下乙個不重複出現的節點。當last尋找到時,pre指向last指標的下乙個節點(pre=last.next)即可完成刪除重複節點的操作。緊接著last指標移位。

last尋找到下乙個不重複出現的元素『5』時,指標定位在『3』,隨後pre=last.next,完成刪除重複元素的操作。pre=pre.next 、last=last.next。

去部落格設定頁面,選擇一款你喜歡的**片高亮樣式,下面展示同樣高亮的**片.

class

listnode

public

listnode()

}public

class

deleteduplicatenode

listnode head=

newlistnode

(null,0

);//建立乙個新的頭節點,防止鍊錶第乙個元素出現重複

head.next=phead;

listnode pre=head;

//pre永遠指向上乙個非重複的元素

listnode last=head.next;

//last去尋找下乙個非重複元素

while

(last!=

null

) pre.next=last.next;

//鍊錶跳過重複元素

last=last.next;

//last繼續後移

}else

}return head.next;

}public

static

void

main

(string[

] args)

}

NOWCODER程式設計題 刪除鍊錶中重複的結點

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 首先判斷鍊錶是否為空,或者是否只含有乙個節點,如果是,則返回頭結點 建立乙個新節點cur,使得cur next phead。這個節點是為了防止頭...

劍指 Offer JZ56 刪除鍊錶中重複的結點

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 見 struct listnode class solution listnode headnode newlistnode 1 headnod...

劍指offer系列 56 刪除鍊錶中重複的結點

q 在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 a 題目並不難,重要的是,可以在head前新增乙個頭結點,防止head被刪的情況。listnode deleteduplication li...