求煉表中倒數第K個節點

2021-08-26 22:57:29 字數 1236 閱讀 7131

求煉表中倒數第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

求鍊錶倒數第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步之前,第二個指標保持不動 在第k 1步開始,第二個指標也開始從鍊錶的頭指標開始遍歷。由於兩個指標的距離保持在k 1,當第乙個 走在前面的 指標到達鍊錶的尾結點時,第二個指標 走在後面的 指...

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

題目描述 輸入乙個鍊錶,輸出該鍊錶中倒數第 k 個結點。思路 定義一快一慢兩個指標,快指標走 k 步,然後慢指標開始走,快指標到尾 時,慢指標就找到了倒數第 k 個節點。實現 時間複雜度 o n 空間複雜度 o 1 public listnode findkthtotail listnode hea...