C語言實現迴圈雙鏈表

2022-09-21 21:54:10 字數 1918 閱讀 1506

#include

#include

#include

typedef int datatype;

typedef struct node

linklist;

linklist* init_list(); // 初始化迴圈雙鏈表

bool creat_list(linkl程式設計客棧ist * l); // 建立鍊錶

int length_list(linklist * l); // 鍊錶長度

bool empty_list(linklist * l); // 判空

bool insert_list(linklist * l, int pos, datatype x); // 插入

bool delete_list(linklist * l, int pos, datatype * x);// 刪除

bool destroy_list(linklist * l); // 銷毀鍊錶

bool tr**erse_list(linklist * l); // 遍歷鍊錶

int prior_value(linklist * l, int pos); // 前趨結點的值

int main()

linklist* init_list()

l->next = l->prior = l; // 空表,前趨指標和後繼指標均指向其自身

return l; // 返回頭結點的位址 }

bool creat_list(linklist * l)

p->next = l; // 保證最後乙個結點的後繼指標指向頭結點

l->prior = p; // 保證頭結點的前趨指標指向最後程式設計客棧乙個結點

return true;}

int length_list(linklist * l)

return len;}

bool empty_list(linklist * l)

bool insert_list(linklist * l, int pos, datatype x)

linklist * q = (linklist*)malloc(sizeof(linklist));

q->data = x;

q->next = p->next;

q->prior = p;

p->next->prior = q;

p->next = q;

return true;}

bool delete_list(linklist * l, int pos, datatype * x)

linklist * q = p->next;

*x = q->data;

p->next = q->next;

q->next->prior = p;

free(q);

return true;}

bool destroy_list(linklist * l)

l = p = null;

return true;}

bool tr**erse_list(linklist * l)

printf("\n\n");

} int prior_value(linklist * l, int pos)

return p->prior->data;

}本文標題: c語言實現迴圈雙鏈表

本文位址:

資料結構 c語言實現 雙鏈表

有頭結點雙鏈表 include include include define max 51 struct people typedef struct lnode lnode,linklist linklist為指向結構體lnode的指標型別,這裡linklist 與lnote 等價 void pri...

C語言實現非迴圈雙鏈表節點的刪除(帶頭結點尾結點)

我在之前一篇部落格 c語言實現非迴圈雙鏈表節點的刪除 不帶頭結點 中詳細講解了不含頭尾節點的雙鏈表中刪除乙個節點,處理過程還是稍顯麻煩。自從我們學習使用頭尾節點來處理雙鏈表後,刪除過程就非常方便。上傳至 核心 如下 刪除pos位置的節點 int deleteposlist node phead,no...

C 迴圈雙鏈表

雙鏈錶比單鏈表多了乙個prev指標域,用來指向乙個節點的前乙個節點,操作起來比單鏈表快捷許多,可以從前從後遍歷整個鍊錶。程式 include include typedef struct dbnode dbnode typedef dbnode dblink void create empty li...