關於解釋部分不再多說了,網上資料很多,下面就介紹具體的實現吧
//雙向迴圈鍊錶的插入與刪除
typedef struct nodednode, *dlinklist;
//在帶有頭結點雙向迴圈鍊錶中第1個資料域內容為x的結點右邊插入乙個資料資訊為item的新結點
void insert(dlinklist list, int x, int data)
while (p != list && p->data != x) //尋找第乙個滿足條件的結點
if (p == list) //如果不存在滿足插入條件的結點,則返回
q = (dnode *)malloc(sizeof(dnode)); //申請乙個新的結點
if (q == null) //判斷記憶體分配是否成功
memset(q, 0, sizeof(q));
q->data = data;
q->prev = p; //插入新的結點
q->next = p->next;
p->next->prev = q;
p->next = q;
}2、從帶有頭結點雙向迴圈鍊錶中刪除第1個資料域內容為x的結點
void delete(dlinklist list, int x)
while (q != list && q->data != x) //找到要刪除的結點
if (q == list) //如果不存在滿足條件的結點,返回-1
q->prev->next = q->next; //刪除結點
q->next->prev = q->prev;
free(q); //釋放結點的記憶體空間
q = null;
}
雙向迴圈鍊錶的插入和刪除
a 為刪除,b 為插入 雙向迴圈鍊錶實則為乙個環狀,因此插入 刪除 對任一位置的節點都適用 如下 define ok 1 define error 0typedef intstatus typedef struct dulnode dulinkedlist dulinkedlist getelemp...
雙向迴圈鍊錶(建立 插入 刪除 遍歷)
author chen ming dong include include typedef struct list str int n str creat str head head prior p p next head return head 遍歷 void gothrough str head...
雙向鍊錶的建立插入與刪除
雙向鍊錶的建立插入與刪除 注意因為建表時用了字元型資料所以輸入數字時只能輸0 9 include includetypedef struct node node,list list tailcreat 尾插法建立鍊錶 void insert list head,int x,char value,in...