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...