在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。 例如,鍊錶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 非遞迴版 ...