標頭檔案:
#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...