單向鍊錶中倒數第k個值

2021-09-24 01:37:55 字數 683 閱讀 7420

本文參考書籍 《劍指offer》 作者何海濤

01 題目輸入乙個單向鍊錶, 輸出該鍊錶中倒數第k個結點。 如乙個鍊錶中有6個結點,1,2,3,4,5,6; 這個鍊錶的倒數第三個節點是值為4的結點。

鍊錶結構如下:

02 解題

解法1:獲取鍊錶的第k個值,如果可以知道鍊錶長度n,那麼可以知道從0開始第n-k的值是要獲取的元素。但是我們需要先遍歷一次鍊錶獲得陣列長度,然後在遍歷得到值,需要兩次遍歷。

解法2:我們用兩個指標,ahead,先向前走k-1個值,bbackward再出發,那麼ahead和bbackward之間相差k-1個值,當ahead到達陣列結尾時,bbackward就是要獲取的值。

如果有類似解題,我們可以先行乙個,不同步長去解類似的題目。

輸出單向鍊錶中倒數第k個結點

描述 輸入乙個單向鍊錶,輸出該鍊錶中倒數第k個結點,鍊錶的倒數第0個結點為鍊錶的尾指標。鍊錶結點定義如下 struct listnode 詳細描述 介面說明 原型 listnode findkthtotail listnode plisthead,unsignedint k 輸入引數 listnod...

51 輸出單向鍊錶中倒數第k個結點

題目描述 輸入乙個單向鍊錶,輸出該鍊錶中倒數第k個結點,鍊錶的倒數第1個結點為鍊錶的尾指標。鍊錶結點定義如下 struct listnode int m nkey listnode m pnext 詳細描述 介面說明 原型 listnode findkthtotail listnode plisth...

鍊錶中倒數第k個結點

題目描述 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。輸入 輸入可能包含多個測試樣例,輸入以eof結束。對於每個測試案例,輸入的第一行為兩個整數n和k 0 n k 1000 n代表將要輸入的鍊錶元素的個數,k代表要查詢倒數第幾個的元素。輸入的第二行包括n個數t 1 t 1000000 代表鍊錶中的元素...