鍊錶 查詢倒數第k個結點

2021-10-08 10:44:31 字數 1025 閱讀 9634

設計乙個函式,在帶附加頭結點的單鏈表中查詢倒數第k個結點。若查詢成功,函式通過參數列送出該結點的data域的

值,並返回rue,否則只返回 false;在主函式中,呼叫該數並查詢倒數第4個結點的值,如果查詢成功,則輸出查詢

到的值(加乙個回車),否則什麼都不輸出。

定義兩個工作指標p和q

先讓p進行移動直到正數第k個數

然後q指標開始跟隨p指標一起移動 ;

直至「」p「」指標遍歷到鍊錶末尾 ;

此時「」q「」指標指的就是倒數第k個數

#include

#include

.h>

using namespace std;

struct node

;class

list

;list:

:list()

list::~

list()

void list:

:insert

(int x)

//插入元素

//write your code here

bool list:

:searchk

(int k)

while

(p!=

null

)//p,q一起移動

查詢鍊錶中倒數第k個結點

輸入乙個單向鍊錶,輸出該鍊錶中倒數第k個結點。鍊錶的倒數第0個結點為鍊錶的尾指標。鍊錶結點定義如下 struct listnode 分析 為了得到倒數第k個結點,很自然的想法是先走到鍊錶的尾端,再從尾端回溯k步。可是輸入的是單向鍊錶,只有從前往後的指標而沒有從後往前的指標。因此我們需要開啟我們的思路...

查詢鍊錶中倒數第k個結點

定義兩個指標。第乙個指標從鍊錶的頭指標開始遍歷向前走k 1,第二個指標保持不動 從第k步開始,第二個指標也開始從鍊錶的頭指標開始遍歷。由於兩個指標的距離保持在k 1,當第乙個 走在前面的 指標到達鍊錶的尾結點時,第二個指標 走在後面的 指標正好是倒數第k個結點。includeusing namesp...

查詢鍊錶中倒數第k個結點

include using namespace std typedef struct lnodelnode,linklist void initlist linklist l void createlist r linklist l,int n return void show linklist l...