求煉表中的倒數第K個節點

2021-06-20 15:43:03 字數 729 閱讀 1304

題目描述:求鍊錶的倒數第k個節點

基本思路:在遍歷時維持兩個指標,第乙個指標從鍊錶的頭指標開始遍歷,在第k-1步之前,第二個指標保持不動;在第k-1步開始,第二個指標也開始從鍊錶的頭指標開始遍歷。由於兩個指標的距離保持在k-1,當第乙個(走在前面的)指標到達鍊錶的尾結點時,第二個指標(走在後面的)指標正好是倒數第k個結點。

特殊處理部分:1.鍊錶為空; 2.鍊錶的長度小於k; 3.k<=0情況

**:#include "stdafx.h"

#include using namespace std;

typedef struct node

node;

node* create_link(int num)

p=null;//最後乙個節點指向空

return head;

} node* findk(node *head, int k)

int i=0;

while(inext;

i++;

if(!pfast)

break;

}if(!pfast)//k大於鍊錶的長度

return pslow; }

int main(array^args)

{ node* head=create_link(10);

node* kfind=findk(head,2);

if(kfind)

cout

求煉表中倒數第K個節點

求煉表中倒數第k個節點,思路很簡單我們在遍歷時維持兩個指標,第乙個指標從鍊錶的頭指標開始遍歷,在第k 1步之前,第二個指標保持不動 在第k 1步開始,第二個指標也開始從鍊錶的頭指標開始遍歷。由於兩個指標的距離保持在k 1,當第乙個 走在前面的 指標到達鍊錶的尾結點時,第二個指標 走在後面的 指標正好...

求鍊錶倒數第k個節點

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

求煉表中的倒數第K個節點

原文 求鍊錶的倒數第k個節點 主要思路設定兩個指標,剛開始都指向鍊錶的第乙個節點,第乙個指標先走k 1步,然後兩個一塊走,直到第乙個指標的下一位為nullptr,則第二個指標所指的位置就是倒數第k個節點。在程式設計書上看見這個方法,自己畫了個鍊錶試了試果然是這樣,但是這是個什麼原理呢?想了想是這樣的...