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