雙向迴圈鍊錶(資料結構)表示

2021-10-04 20:57:01 字數 2966 閱讀 6727

標頭檔案:

#include

#include

"stdlib.h"

typedef

int status;

typedef

int elemtype;

//鍊錶結點及鍊錶資料表示定義

//雙向鍊錶的每個結點需要連線前乙個結點和後乙個結點,所以需要定義兩個指標域,分別指向前乙個結點和後乙個結點。

typedef

struct duallinklistnodeduallinklistnode,

*duallinklistlist;

//以下是雙向迴圈鍊錶操作函式原型

status initduallinklistlist

(duallinklistlist &l)

;//初始化操作

status createduallinklistlist

(duallinklistlist &l,

int n)

;//構造指定元素個數的鍊錶

void

destroyduallinklistlist

(duallinklistlist &l)

;//鍊錶銷毀操作

void

clearduallinklistlist

(duallinklistlist &l)

;//鍊錶清除操作

intduallinklistlistlength

(duallinklistlist l)

;//鍊錶長度

bool

duallinklistlistempty

(duallinklistlist l)

;//鍊錶是否為空

status getduallinklistlistelem

(duallinklistlist l,

int i,elemtype &e)

;//取煉表中的第i個元素

status insertduallinklistlist

(duallinklistlist &l,

int i)

;//在鍊錶的第i個位置插入元素

status deleteduallinklistlist

(duallinklistlist &l,

int i)

;//刪除鍊錶的第i個元素

void

printduallinklistlist

(duallinklistlist l)

;//列印鍊錶

//初始化操作,初始化時兩個指標都指向其自身

status initduallinklistlist

(duallinklistlist &l)

else

}//構造指定元素個數的鍊錶

status createduallinklistlist

(duallinklistlist &l,

int n)

cout<<

"鍊錶已產生!"

<

return1;

}//列印鍊錶

void

printduallinklistlist

(duallinklistlist l)

cout<

}int

duallinklistlistlength

(duallinklistlist l)

//鍊錶長度

return i;

}//刪除鍊錶的第i個元素

status deleteduallinklistlist

(duallinklistlist &l,

int i)

else

q=p;

q->prior-

>next = p-

>next;

q->next-

>prior = p-

>prior;

free

(p);

cout<<

"位置為:"

<

"的元素刪除成功!"

<

return1;

}}//在鍊錶的第i個位置插入元素

status insertduallinklistlist

(duallinklistlist &l,

int i)

elseif(

!(q=

(duallinklistlist)

malloc

(sizeof

(duallinklistnode)))

) cout<<

"構造結點成功,請輸入要插入的值:"

; cin>>q-

>data;

q->prior=p-

>prior;

p->prior-

>next=q;

q->next=p;

p->prior=q;

cout<<

"插入"

<

>data<<

"成功!"

<

return1;

}}//取煉表中的第i個元素

status getduallinklistlistelem

(duallinklistlist l,

int i, elemtype &e)

else

e=p-

>data;

cout<<

"位置為"

<

"的元素為:"

<

}return1;

}

原始檔:

#include

"duallinklist.h"

void

main()

執行效果:

資料結構 雙向迴圈鍊錶

近期我在學習資料結構,於是我自己整理了單鏈表 迴圈單鏈表 雙向鍊錶 雙向迴圈鍊錶的相關 以鞏固這段時間的學習,也希望能夠幫助初學者,希望大家在閱讀以下 時發現問題糾正於我,一起 cycdoublelist.h ifndef cycdoublelish h define cycdoublelish h...

資料結構 雙向迴圈鍊錶

typedef struct node node,pnode pnode init dc list void 雙向迴圈鍊錶的初始化 pnode new node int dat 新建乙個節點 把位址為pnew的節點插入到雙向迴圈鍊錶的尾部 頭節點的前面 bool list add tail pnod...

資料結構 雙向鍊錶,迴圈鍊錶

也許是自己太小看資料結構,練習了幾天還在第二章徘徊,可自己覺得基礎還是要打牢的好 總結一下 第乙個是雙向鍊錶,include include typedef struct node node,linklist void creat linklist l else int insert linklis...