輸出乙個單鏈表中倒數第K個節點

2021-06-02 20:46:47 字數 412 閱讀 2441

在找實習的一次**面試中遇到了這麼個問題。

乙個單向鍊錶,輸出該鍊錶中倒數第k個結點,鍊錶的倒數第0個結點為鍊錶的尾指標:

思路:設定兩個指標p1,p2;

p1=head;       p2=head;

先讓p2向前走k步,然後同時讓p1,p2向後走。

當p2走到頭的時候,p1所指的節點就是所求節點。

struct node

;node* fun(node *head,int k)

return p1;

}

**:

輸出單鏈表的倒數第K個節點

求解單鏈表第k個節點或者倒數第k個節點總是乙個o n 的問題!一般的求解倒數第k個問題是轉換為求解第n k個節點的問題,這樣需要求出鍊錶總長n,實際上可以做的更好!求解倒數第k個節點更好的一種做法是不求解鍊錶長度,使用乙個指標指向第k個節點,另乙個指標指向第乙個節點,兩個指標同步移動,當第乙個指標移...

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

題目 求解單鏈表中倒數第k個節點。思路 第一種方法 先遍歷一遍單鏈表記錄長度n,然後從頭遍歷n k步即可 初始化為頭結點 begin end 注意距離是k 1,然後兩個指標同步執行,直至end到尾巴節點,需要處理的情況,是k是否大於鍊錶長度。即start null,這是因為我們通常習慣從倒數第1個節...

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

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