求煉表中倒數第k個節點,思路很簡單我們在遍歷時維持兩個指標,第乙個指標從鍊錶的頭指標開始遍歷,在第k-1步之前,第二個指標保持不動;在第k-1步開始,第二個指標也開始從鍊錶的頭指標開始遍歷。由於兩個指標的距離保持在k-1,當第乙個(走在前面的)指標到達鍊錶的尾結點時,第二個指標(走在後面的)指標正好是倒數第k個結點。
實現**如下:
基本思路:
(1)將pslow和pfast同時指向鍊錶的頭部
(2)將快指標向後移動k位
(3)快慢指標同時移動,當pfast為空時,pslow就指向倒數第k個節點
(4)結束
演算法:// finddaoshuk.cpp : 定義控制台應用程式的入口點。
//#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)
while(pfast)
return pslow;
}int _tmain(int argc, _tchar* argv)
基本思路:
(1)將pslow和pfast同時指向鍊錶的頭部
(2)將快指標向後移動k位
(3)快慢指標同時移動,當pfast為空時,pslow就指向倒數第k個節點
(4)結束
演算法:// finddaoshuk.cpp : 定義控制台應用程式的入口點。
//#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)
while(pfast)
return pslow;
}int _tmain(int argc, _tchar* argv)
{ node* head = create_link(10);
node* knode=findk(head,2);
cout 1.初解 public static node findkthtotail node head,uint k behind head while ahead.next null return behind 上面的 存在3處魯棒性問題 1 輸入的head為空指標。由於 會試圖訪問空指標指向的記憶體,程... 題目描述 求鍊錶的倒數第k個節點 基本思路 在遍歷時維持兩個指標,第乙個指標從鍊錶的頭指標開始遍歷,在第k 1步之前,第二個指標保持不動 在第k 1步開始,第二個指標也開始從鍊錶的頭指標開始遍歷。由於兩個指標的距離保持在k 1,當第乙個 走在前面的 指標到達鍊錶的尾結點時,第二個指標 走在後面的 指... 題目描述 輸入乙個鍊錶,輸出該鍊錶中倒數第 k 個結點。思路 定義一快一慢兩個指標,快指標走 k 步,然後慢指標開始走,快指標到尾 時,慢指標就找到了倒數第 k 個節點。實現 時間複雜度 o n 空間複雜度 o 1 public listnode findkthtotail listnode hea...求鍊錶倒數第k個節點
求煉表中的倒數第K個節點
15 求煉表中倒數第 K 個節點