雙向迴圈鍊錶的插入與刪除

2021-07-29 19:43:33 字數 871 閱讀 9276

關於解釋部分不再多說了,網上資料很多,下面就介紹具體的實現吧

//雙向迴圈鍊錶的插入與刪除

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