#include
#include
// 雙向迴圈鍊錶的節點結構
typedef
struct node listnode;
// 顯示選單
void
displaymenu()
// 建立乙個雙向迴圈鍊錶(帶頭節點)
listnode*
createlist()
phead->val =0;
phead->prev = phead;
phead->next = phead;
ptail = phead;
printf
("請輸入鍊錶的長度:");
scanf_s
("%d"
,&length)
;for
(i =
0; i < length;
++i)
printf
("請輸入第%d個節點的資料值:"
,(i +1)
);scanf_s
("%d"
,&data)
; pnew->val = data;
pnew->prev = ptail;
pnew->next = phead;
ptail->next = pnew;
phead->prev = pnew;
ptail = pnew;
}printf
("鍊錶建立成功!資料如下:\n");
return phead;
}// 獲取鍊錶的長度
intgetlength
(listnode* phead)
return length;
}// 增加節點(在pos所在的元素之前新增)
intaddnode
(listnode* phead,
int pos,
int data)
while
(--pos)
pnew->val = data;
pnew->prev = phead;
pnew->next = phead->next;
phead->next->prev = pnew;
phead->next = pnew;
return1;
}return0;
}// 刪除資料
intdelnode
(listnode* phead,
int pos)
phead->prev->next = phead->next;
phead->next->prev = phead->prev;
return1;
}return0;
}// 修改資料
intmodnode
(listnode* phead,
int pos,
int data)
pnode->val = data;
return1;
}return0;
}// 查詢資料
intfindnode
(listnode* phead,
int data)
pnode = pnode->next;
}return0;
}// 顯示所有資料
void
displaylist
(listnode* phead)
printf
("\n");
}// 刪除整個鍊錶,並釋放記憶體空間
void
freememory
(listnode*
* phead)
else}}
intmain()
else
break
;case3:
printf
("請輸入您想刪除的節點的位置:\n");
scanf_s
("%d"
,&pos);if
(delnode
(phead, pos)==1
)else
break
;case4:
printf
("請輸入您想查詢的節點的值:\n");
scanf_s
("%d"
,&data);if
(findnode
(phead, data)==0
)break
;case5:
printf
("請輸入您想修改的節點的位置:\n");
scanf_s
("%d"
,&pos)
;printf
("請輸入您想修改節點的值為:\n");
scanf_s
("%d"
,&data);if
(modnode
(phead, pos, data)==1
)else
break
;case6:
displaylist
(phead)
;break
;case7:
freememory
(&phead)
; flat =1;
break
;default
:printf
("您的輸入有誤!請重新選擇!\n");
break;}
}return0;
}
資料結構與演算法(C語言版) 雙向鍊錶
鍊錶有單向鍊錶也有雙向鍊錶,雙向鍊錶既可以下乙個,也可以上乙個。雙向鍊錶在乙個節點裡至少有三個域,左鏈域 llink 右鏈域 rlink 資料域 data 雙向鍊錶也可以做成迴圈鍊錶,可以有表頭結構。今天我們做乙個雙向鍊錶,但是不是迴圈鍊錶 include using namespace std c...
資料結構 鍊錶(C語言版)
程式 include include include define error 0 define ok 1 define true 1 define false 0 define overflow 2 typedef int elemtype 定義鍊錶元素的型別 typedef int status...
資料結構 雙向迴圈鍊錶(C語言)
include include define maxsize 10010 define elemtype int typedef struct dulnodedulnode,dulinklist 建立雙向迴圈鍊錶 dulinklist createlist int n p next head hea...