查詢鍊錶中倒數第k個結點

2021-10-02 22:41:17 字數 670 閱讀 4841

#include using namespace std;

typedef struct lnodelnode,*linklist;

void initlist(linklist &l)

void createlist_r(linklist &l,int n)

return;

}void show(linklist &l)

coutnext;

for(i=0;inext;

while(p)

coutn;

while(n!=0)

return 0;

}

描述利用單鏈表表示乙個整數序列,請實現乙個時間複雜度為o(n)、空間複雜度為o(1)的演算法,通過一趟遍歷在單鏈表中確定倒數第k個結點。

輸入多組資料,每組資料有三行,第一行為鍊錶的長度n,第二行為鍊錶的n個元素(元素之間用空格分隔),第三行為k。當n=0時輸入結束。

輸出對於每組資料分別輸出一行,輸出每個鍊錶的倒數第k個結點對應的數值。

輸入樣例 1 

7

5 2 3 4 50 100 7035

20 30 10 4 5

50

輸出樣例 1

50

20

查詢鍊錶中倒數第k個結點

輸入乙個單向鍊錶,輸出該鍊錶中倒數第k個結點。鍊錶的倒數第0個結點為鍊錶的尾指標。鍊錶結點定義如下 struct listnode 分析 為了得到倒數第k個結點,很自然的想法是先走到鍊錶的尾端,再從尾端回溯k步。可是輸入的是單向鍊錶,只有從前往後的指標而沒有從後往前的指標。因此我們需要開啟我們的思路...

查詢鍊錶中倒數第k個結點

定義兩個指標。第乙個指標從鍊錶的頭指標開始遍歷向前走k 1,第二個指標保持不動 從第k步開始,第二個指標也開始從鍊錶的頭指標開始遍歷。由於兩個指標的距離保持在k 1,當第乙個 走在前面的 指標到達鍊錶的尾結點時,第二個指標 走在後面的 指標正好是倒數第k個結點。includeusing namesp...

查詢鍊錶中倒數第k個結點

題目 輸入乙個單向鍊錶,輸出該鍊錶中倒數第k個結點。鍊錶的倒數第0個結點為鍊錶的尾指標。鍊錶結點定義如下 struct listnode 兩個方法,第乙個先遍歷,獲得鍊錶總共的長度,這樣就知道從head到達倒數第k個需要移動多少次,從頭在移動一遍。第二個,兩個指標,第二個比第乙個多移動k次之後,兩個...