思路:
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...