資料結構 求單向鍊錶的倒數第K個節點

2022-02-13 09:44:28 字數 681 閱讀 6021

首先,對於鍊錶來說,我們不能像陣列一樣直接訪問,所以我們想到要求倒數第k個節點首先要知道最後乙個節點。

然後從最後乙個節點往前數k個。

最後得到想要的值。

但是這是不對的,為什麼呢?因為題目給出的是單向鍊錶,只能從前往後找。

所以我們需要換一種思路。

定兩個指標。

都從鍊錶的頭開始走,乙個先走乙個後走,先走的比後走的快k步。

然後兩個人之後每次都走一步。

當先走的走到終點的時候。

那麼後走的所在的位置就是倒數第k個節點的位置了。

下面是**,這次使用stl庫中的list完成。

/*

**單向鍊錶求倒數的第k個節點的值 **/

#include

#include

#include

#include

#include

using

namespace

std;

//定義乙個鍊錶

listlinklist;

//列印鍊錶中的元素

void

print_list()

intmain()

cout

<<"

倒數第三個元素是:

"<<*iterator_b

}

單向鍊錶中倒數第k個值

本文參考書籍 劍指offer 作者何海濤 01 題目輸入乙個單向鍊錶,輸出該鍊錶中倒數第k個結點。如乙個鍊錶中有6個結點,1,2,3,4,5,6 這個鍊錶的倒數第三個節點是值為4的結點。鍊錶結構如下 02 解題 解法1 獲取鍊錶的第k個值,如果可以知道鍊錶長度n,那麼可以知道從0開始第n k的值是要...

求單向鍊錶中的倒數第K個節點2

題目描述 輸入乙個鍊錶,輸出該鍊錶中倒數第k個節點。為了符合大多數人的習慣,本題從1開始計數,即鍊錶的尾節點是倒數第1個節點。例如乙個鍊錶有6個節點,從頭節點開始他們的值依次是1 2 3 4 5 6.這個鍊錶的倒數第3個節點值為4.解題思路 主要思路是借助兩個迭代器指向的位置,確定倒數第k個節點。第...

求鍊錶倒數第k個節點

1.初解 public static node findkthtotail node head,uint k behind head while ahead.next null return behind 上面的 存在3處魯棒性問題 1 輸入的head為空指標。由於 會試圖訪問空指標指向的記憶體,程...