雙向迴圈鍊錶

2021-06-01 06:46:44 字數 1396 閱讀 2531

#include #include typedef struct node

*dlinklist,dlistnode;

#define n sizeof(dlistnode)

dlinklist create_dlist(int a)//建立只有乙個元素的雙向鍊錶

void insert_dlist(dlinklist head, int e,int n)//插入

int locate(dlinklist head,int a)//定位

if(p->data != a)

i = 0;

return i;

}void del_dlist(dlinklist head,int n)//刪除

void print_dlist(dlinklist head)//雙向輸出

printf("\n");

printf("尋找前驅輸出:\t");

while(p->prior != head)//尋找直接前驅輸出

printf("%d\n\n",p->data);

}void circulate(dlinklist head)//構建迴圈

p->next = head;

head->prior = p;

} void print_circulate_dlist(dlinklist head,int n)//迴圈輸出

} printf("\n\n");

}int main()

; int n,i;

char ch;

dlinklist head;

head = create_dlist(0);

printf("初始鍊錶為:\n");

print_dlist(head);

printf("是否進行插入操作?y/n\n");

scanf("%c",&ch);

getchar();

if(ch == 'y')

}printf("是否構成迴圈鍊錶?y/n \n");

scanf("%c",&ch);

if(ch == 'y')

getchar();

printf("是否進行刪除操作?y/n\n");

scanf("%c",&ch);

if(ch == 'y')

del_dlist(head,loc);

printf("刪除%d後\n",i);

print_dlist(head);

} } printf("操作結束!\n");

printf("當前表的狀態為\n");

print_dlist(head);

system("pause");

return 0;

}

雙向鍊錶和雙向迴圈鍊錶

和單向鍊錶相比,多了乙個前驅結點。如果他為空,那麼next和prior都指向自己。而對於雙迴圈鍊錶,只需要最後乙個元素的next指向head next,head next的prior指向最後乙個節點即可。新節點s插入鍊錶,s next給p結點,s prior給p prior,然後,p prior n...

迴圈鍊錶,雙向鍊錶

迴圈鍊錶 迴圈鍊錶與順序鍊錶之間的區別 迴圈鍊錶最後乙個資料的next指標域不為空,而是指向頭結點,其他基本操作大體相同,只是在判斷表結束的條件變為判斷節點的引用域是否為頭引用 雙向鍊錶 author neosong date oct 10,2017 4 43 01 pm program of in...

鍊錶 雙向迴圈鍊錶

雙向迴圈鍊錶與單鏈表一樣,都是邏輯連續 物理不連續的儲存方式,但它的效果要遠遠優於單鏈表,其結構如下 雙向迴圈鍊錶首先要有乙個頭節點,頭節點中不存放資料,真正的資料從頭節點的下乙個節點開始存放 然後每乙個節點都有兩個指標,分別指向前乙個節點和後乙個節點 最後頭尾相連,就成了雙向迴圈鍊錶。includ...