劍指offer 鍊錶

2021-09-26 03:45:03 字數 1085 閱讀 2323

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

/*

struct listnode

};*/

class solution //找到不重複的下個節點

if(now==phead) //當前結點是頭節點也就是在煉表頭就

phead=circp; //出現重複

else //中間部分出現重複

pre->next=circp;

now=circp; //可能出現4->4->5->5之類的連續重

} //復情況

else

}return phead;}};

給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。

/*

struct listnode

};*/

class solution

if(p==null||p->next==null) return null; //沒有環

快指標以較滿指標2倍的步率向前移動,相遇在紅色標註處,假設環前的長度為l,環以順時針方向,相遇點距離環的入口點的距離為m,環中剩餘長度為n,則有:

所以:所以接下來讓快指標回到頭節點,以相同的步率前進,則再次相遇點一定在環的入口。

劍指offer 鍊錶

單向鍊錶的結構定義 typedef int datatype struct listnode 問題1 往鍊錶的末尾新增乙個結點 給定頭結點,往末尾插入乙個結點 void insertnode listnode head,datatype key listnode p head while p nex...

劍指offer 鍊錶

鍊錶 鍊錶是一種動態資料結構 struct listnode 往鍊錶的末尾新增乙個節點的c 程式如下 void addtotail listnode phead,int value 注意第乙個引數phead是乙個指向指標的指標。當我們往乙個空鍊錶插入乙個結點時,else pnode m pnext ...

劍指offer 鍊錶

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。思路1 遞迴版 class solution 找到當前節點與下乙個節點不重複的點,從不重複的點開始遞迴 return deleteduplication phead next else 思路2 非遞迴版 ...