#include
#include
#include
typedef struct node
linklist;
void clear();///清屏
linklist *init_doublelinklist();///初始化雙向迴圈鍊錶
void creat_doublelinklist(linklist *);///建立雙向迴圈鍊錶
int del_val(linklist *);///刪除雙向迴圈鍊錶的值
int insert_val(linklist *);///插入雙向迴圈鍊錶的值
void display_doublelinklist(linklist *);///輸出雙向迴圈鍊錶
int main()
clear();
}while(1);
return 0;
}///初始化迴圈鍊錶
linklist *init_doublelinklist()
///建立迴圈鍊錶
void creat_doublelinklist(linklist *l)
p->next=l;///輸入結束之後p->next不再是之前為空了,而是指向l這個頭結點,也就達到迴圈的效果了
l->prior=p;///l的頭節點也要指向尾節點那麼也就是達到雙向了
}///輸出鍊錶
void display_doublelinklist(linklist *l)
printf("雙向鍊錶資料如下:");
while(p!=l)
printf("\n");
}///刪除資料
int del_val(linklist *l)
printf("請輸入你要刪除的值:");
scanf("%d",&value);
while(p!=l)
}if(ok)
return 1;///刪除成功返回1
else
return 0;///刪除失敗返回0
}///插入資料
int insert_val(linklist *l)
printf("請輸入你要在什麼位置插入:");
scanf("%d",&loc);
printf("請輸入要插入的值:");
scanf("%d",&value);
temp->data=value;
while(p!=l)
p=p->next;
}temp->prior=p->prior;///temp的prior指向p的prior,相當於temp的前驅指向了loc-1,也就達到temp變loc的位置的開始
p->prior->next=temp;///p->prior->next就是loc-1的next指向temp,temp的前乙個節點的prior和next都銜接好了,接下來弄p
temp->next=p;///temp的next指向p,p也就變成了loc+1的位置了
p->prior=temp;///p的prior指向temp也就是上乙個節點
///以上四個步驟之後就完美把temp插入進去,讓temp完美變成loc的位置
if(ok)
return 1;///插入成功返回1
else
return 0;///插入失敗返回0
}///清屏
void clear()
雙向迴圈鍊錶的基本操作
dlink.h pragma once include typedef int dlinktype typedef struct dlinknode dlinknode dlinknode buynode dlinktype value void destroynode dlinknode posn...
雙向迴圈鍊錶的基本操作
實現鍊錶的增刪查,清空,銷毀 pragma once typedef int datatype 鍊錶的節點結構 typedef struct dlinklist dlinklist,dlnode 鍊錶的初始化 void dllinklistinit dlnode l 建立乙個新的節點 dlnode ...
雙向鍊錶 基本操作
test.c define crt secure no warnings 1 include doubleslishtnode.h void test1 initdslist pushback printfdslist popback void test2 pushfront popfront vo...