鍊錶反轉有兩種常見方式。下面從圖中詳細解釋。其中帶有部分核心**,最後上完整**。
//首先定義三個變數
pnode pre = null;
pnode now = phead->pnext;
pnode next = null;
next = now->pnext;//先儲存下乙個節點
now->pnext = pre;//當前節點的next指標指向前乙個節點
pre = now;//前乙個節點賦值為當前節點
now = next;//當前節點賦值為下乙個節點
//一直遞迴直到找到尾節點
if(phead == null || phead->pnext == null)
return phead;
phead->pnext->pnext = phead;//讓當前節點的下乙個節點的指標指向當前節點
phead->pnext = null;//讓當前節點的下乙個節點指向null
再來一步
/***反轉鍊錶**/
#include
#include
#include
using
namespace
std;
typedef
struct
nodenode, *pnode;//
node等價於struct node,pnode等價於struct node*
//列印鍊錶所有元素
void
print_list(pnode phead)
cout
//建立鍊錶
pnode create_list()
pnow->pnext =null;
return
phead;}//
迭代反轉鍊錶
void
reverse_list(pnode phead)
//最後把頭結點指向新生成鍊錶的頭
phead->pnext =pre;
return; }
//遞迴反轉鍊錶
pnode reverse_list2(pnode phead)
intmain()
資料結構 線性表 鍊錶
在之前了解完什麼是資料結構之後 資料結構 線性表 順序表 陣列 我們再來看看線性結構另外一種實現方式 鍊錶順序表中的鍊錶沒有物理上的連續儲存要求,只需要在儲存資料時通過 鏈 的方式將資料進行連線,而這個 鏈 的實現就是通過指標來實現的。鍊錶的連續儲存方式 對於抽象資料型別來說,每一種資料結構都有自己...
資料結構 線性表(順序表 鍊錶)
線性表 1 線性表是一種邏輯結構,表示一種一對一的邏輯關係,除首節點和尾節點,每個結點只有乙個前驅結點和乙個後繼結點 2 兩種實現的物理結構 順序儲存,鏈式儲存 順序表 1 定義 用一組位址連續的儲存單元,一次儲存線性表中的元素,使得邏輯位置相鄰的元素物理位置也相鄰。2 特點 順序表元素的位序從1開...
資料結構 線性表 鍊錶實現
ifndef chain h define chain h include using namespace std vs平台下自己定義了nullptr null 0 但是在gcc下沒有定義 ifndef nullptr define nullptr 0 endif 鍊錶的節點元素類 template...