鍊錶中的倒數第k個節點

2021-07-06 08:07:02 字數 433 閱讀 6535

題目:輸入乙個鍊錶,輸出該鍊錶的倒數第k個節點。從1開始計數,即鍊錶的尾節點為倒數第1個節點。

解答:首先自然想到的是尋找倒數第k個節點,那麼就是從前往後數第n-k+1個節點,則先對鍊錶遍歷一遍得到鍊錶的長度,然後第二次遍歷時走n-k+1步就可以了。但是該方法需要對鍊錶遍歷兩次,有沒有只需要遍歷依次的方法?自然是有的,可以想到用兩個指標的方法,先讓第乙個指標先走k-1步,然後第二個指標指向鍊錶的第1個節點,然後兩個指標同時往後走,當第二個指標達到尾節點時,第乙個指標指向的正是倒數第k個節點。

struct node

};node* findkthnodetotail(node* phead,const int k)

while(pfirstnode->m_pnext)

return psecondnode;

}

鍊錶中倒數第k個節點

題目 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。struct listnode方法 定義兩個指標。第乙個指標從鍊錶的頭指標開始遍歷向前走k 1,第二個指標保持不動 從第k步開始,第二個指標也開始從鍊錶的頭指標開始遍歷。由於兩個指標的距離保持在k 1,當第乙個 走在前面的 指標到達鍊錶的尾結點時,第二...

鍊錶中倒數第k個節點

輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。ac class solution def findkthtotail self,head,k write code here 將每個節點存在棧裡,選取stack中第k個值 stack while head head head.next if k len s...

鍊錶中倒數第k個節點

acwing打卡活動 劍指offer 打卡活動 周二第十題 鍊錶中倒數第k個節點 definition for singly linked list.public class listnode 思路 設列表總結點數為n,則n k 1 為該列表的倒數第k個節點 如 n 10,k 2,則 10 2 1 ...