題目描述:求鍊錶的倒數第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 1步之前,第二個指標保持不動 在第k 1步開始,第二個指標也開始從鍊錶的頭指標開始遍歷。由於兩個指標的距離保持在k 1,當第乙個 走在前面的 指標到達鍊錶的尾結點時,第二個指標 走在後面的 指標正好... 1.初解 public static node findkthtotail node head,uint k behind head while ahead.next null return behind 上面的 存在3處魯棒性問題 1 輸入的head為空指標。由於 會試圖訪問空指標指向的記憶體,程... 原文 求鍊錶的倒數第k個節點 主要思路設定兩個指標,剛開始都指向鍊錶的第乙個節點,第乙個指標先走k 1步,然後兩個一塊走,直到第乙個指標的下一位為nullptr,則第二個指標所指的位置就是倒數第k個節點。在程式設計書上看見這個方法,自己畫了個鍊錶試了試果然是這樣,但是這是個什麼原理呢?想了想是這樣的...求煉表中倒數第K個節點
求鍊錶倒數第k個節點
求煉表中的倒數第K個節點