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

2021-10-25 06:22:11 字數 984 閱讀 3477

思路:

1. 編寫乙個方法,接收head節點,同時接收乙個index

2. index表示是倒數第index個節點

3. 先把鍊錶從頭到尾遍歷,得到鍊錶的總長度getlength

4. 得到size後,我們從鍊錶的第乙個開始遍歷(size-index個)

5. 如果找到了返回該節點,否則返回null

public

static heronode findlastindexnode

(heronode head,

int index)

// 第一次遍歷得到鍊錶的長度

int size =

getlength

(head)

;// 第二次遍歷 size-index位置,就是我們倒數的第k個節點

// 先做乙個index 的校驗

if(index <=

0|| index > size)

// 定義乙個輔助變數

heronode cur = head.next;

for(

int i =

0; i < size - index; i++

)return cur;

}

// 方法:獲取到單鏈表的節點的個數(如果是帶頭結點的鍊錶,需求不統計頭節點)

/** *

* @param head

* 鍊錶的頭節點

* @return 返回的就是有效節點的個數

*/public

static

intgetlength

(heronode head)

int length =0;

heronode cur = head.next;

while

(cur != null)

return length;

}

尋找單鏈表中倒數第k個結點

題目描述 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。為了符合大多數人的習慣,本題從1開始計數,即鍊錶的尾結點是倒數第1個結點。例如乙個鍊錶有6個結點,從頭結點開始它們的值依次是1,2,3,4,5,6.這個鍊錶的倒數第3個結點是值為4的結點。思路分析 為了得到倒數第k個結點,很自然的想法是先走到鍊錶的...

刪除單鏈表倒數第k個結點

在資料結構這一方面,鍊錶這塊容易搞混的是它的指標。下面的演算法為刪除單鏈表倒數第k個結點,所有的步驟解析都在 裡說明了。刪除單鏈表的倒數第 k個結點.結點定義 classnode public classremotelastedkthnode node node head 遍歷一遍鍊錶,得到 k 最...

刪除單鏈表的倒數第k個結點

策略 直接遍歷總數為len,再次遍歷第len k 1個就是答案,但是這樣遍歷了o n k 個,可以在o在更短的時間內找到 圖示 參考 include using namespace std typedef struct listnode listnode void createlist listno...