習題 求單鏈表的倒數第k個結點

2021-10-05 06:51:36 字數 1062 閱讀 7187

1、思路:

(1)定義兩個指標指向頭結點;

(2)讓其中乙個指標向後移動k-1個結點;為了讓兩個指標之間的距離和倒數第k個節點到尾結點的距離保持一致

(3)兩個指標同時向後移動,直到乙個指標指向尾結點,此時另乙個指向的就是k結點。

2、**實現:

(1)seqlist.h

#pragma once

typedef int elemtype;

typedef struct node

node,*plist;

void init(plist phead);//初始化

node* buynode(elemtype val);//開闢新結點

int insert(plist phead,elemtype val);//頭插建立鍊錶

int find(plist phead,int k);//查詢倒數第n個結點

void show(plist phead);//列印

(2)seqlist.cpp

#include #include#include "seqlist.h"

void init(plist phead)

phead->next=null;

}node* buynode(elemtype val)

int insert(plist phead,elemtype val)

int find(plist phead,int k)

while(pnext ->next!=null)//注意必須是結點的指標域為空,不是結點為空

return pcur->data;

}void show(plist phead)

printf("\n");

}

(3)main.cpp

int main()

show(&head);

int a=find(&head,2);

printf("%d\n",a);

return 0 ;

}

逆置單鏈表 求倒數第k個結點

定義並建立鍊錶 include using namespace std include typedef struct listnode listnode void push listnode list,int x else cur next tmp 逆置單鏈表 listnode listrevers...

刪除單鏈表倒數第k個結點

在資料結構這一方面,鍊錶這塊容易搞混的是它的指標。下面的演算法為刪除單鏈表倒數第k個結點,所有的步驟解析都在 裡說明了。刪除單鏈表的倒數第 k個結點.結點定義 classnode public classremotelastedkthnode node node head 遍歷一遍鍊錶,得到 k 最...

刪除單鏈表的倒數第k個結點

策略 直接遍歷總數為len,再次遍歷第len k 1個就是答案,但是這樣遍歷了o n k 個,可以在o在更短的時間內找到 圖示 參考 include using namespace std typedef struct listnode listnode void createlist listno...