求解單鏈表中倒數第k個節點

2021-07-13 15:41:31 字數 347 閱讀 7212

題目:求解單鏈表中倒數第k個節點。

思路:第一種方法:先遍歷一遍單鏈表記錄長度n,然後從頭遍歷n-k步即可(初始化為頭結點)。

begin       end

注意距離是k-1,然後兩個指標同步執行,直至end到尾巴節點,需要處理的情況,是k是否大於鍊錶長度。即start==null,這是因為我們通常習慣從倒數第1個節點稱呼,而不是倒數第0個節點稱呼。

下面是我實現的**,歡迎各位批評指正。

/*struct listnode

};*/

class solution

while(start->next!=null)

return end;}};

查詢單鏈表中倒數第k個節點

那麼,這次來說乙個具體的問題吧,乙個單向鍊錶中有n個結點,現在要求列印鍊錶中的倒數第k個結點,應該怎樣實現?普通人反映出的第乙個思路應該是先遍歷一遍整個鍊錶知道鍊錶的長度len,然後要輸出倒數第k個就是正數的第len k 1個結點,那麼只需要遍歷鍊錶到這個結點然後列印就好了。顯然這個方法需要遍歷2次...

刪除單鏈表倒數第K個節點

有p1,p2兩個指標,p1從頭開始跑,先跑k個節點,然後p2開始跑,當p1跑到頭時,p2指向的就是倒數第k個節點了。這道題的思路比較簡單,要想做得更好,可以加入一些魯棒性的考慮,比如說空鍊錶情況,鍊錶長度小於k等。下面是 include struct node class solution if k...

單鏈表的倒數第K個節點

思路 建立兩個迭代器,乙個迭代器quick,乙個迭代器slow,quick沿鍊錶,先行k步,然後和slow一起行進,直至quick到達鍊錶尾端,此時slow對應的資料,就是倒數第k個節點。include include includeusing namespace std listchange ve...