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

2021-10-08 09:25:18 字數 662 閱讀 8248

解題思路

(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)

//定義乙個輔助變數,for迴圈定位到倒數的index

heronode cur = head.next; //3 //3-1=2

for(int i=0; i< size - index; i++)

return cur;

}

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

那麼,這次來說乙個具體的問題吧,乙個單向鍊錶中有n個結點,現在要求列印鍊錶中的倒數第k個結點,應該怎樣實現?普通人反映出的第乙個思路應該是先遍歷一遍整個鍊錶知道鍊錶的長度len,然後要輸出倒數第k個就是正數的第len k 1個結點,那麼只需要遍歷鍊錶到這個結點然後列印就好了。顯然這個方法需要遍歷2次...

單鏈表查詢倒數第K個節點

分析 p q兩個指標指向表頭結點,p向前移動k個位置後q向前移動,當p結點移到尾結點時,q的next指標域所指結點即為所求結點 若不存在k個結點,則當p指向尾結點時,k不為0。include include typedef struct node node,linklist linklist cre...

單鏈表的倒數第K個節點

思路 建立兩個迭代器,乙個迭代器quick,乙個迭代器slow,quick沿鍊錶,先行k步,然後和slow一起行進,直至quick到達鍊錶尾端,此時slow對應的資料,就是倒數第k個節點。include include includeusing namespace std listchange ve...