《資料結構》C語言版 雙向迴圈鍊錶的基本操作實現

2021-10-09 05:21:31 字數 2747 閱讀 1931

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