關於迴圈雙向鍊錶

2021-06-05 19:25:46 字數 1206 閱讀 3315

typedef struct node

node,*link;

link createlink()//建立鍊錶

//初始化頭結點

head->next=null;

head->pre=null;

list=head;//head先申請空間,在賦值,否則無效

printf("please input data(end with 0):\n");

scanf("%d",&input);

while(input!=0)

cur->data=input;

list->next=cur;

cur->pre=list;

list=cur;

scanf("%d",&input);

}//尾節點的後繼指向頭結點,頭結點的前驅指向尾節點,構成雙向迴圈鍊錶

cur->next=head;

head->pre=cur;

return head;

}void printlink(link head)//列印鍊錶

printf("\n");

}link insertlink(link head)//插入新的節點

//頭插法,讓先來的節點有所指向

cur->data=input;

cur->next=list->next;

cur->pre=list;

list->next=cur;

cur->next->pre=cur;

return head;

}link  searchlink(link head)//查詢指定節點,查詢到第乙個符合條件的節點,便返回該節點的指標

list=list->next;

}return null;

}link deletelink(link head,link pfind)//刪除節點

else

return head;

}int lenlink(link head)//計算鍊錶長度

return len;

}link poplink(link head,int len)//氣泡排序,每次都是次都是從首節點開始

p=p->next;

q=q->next;}}

return head;

}void destorylink(link head)

}

雙向鍊錶和雙向迴圈鍊錶

和單向鍊錶相比,多了乙個前驅結點。如果他為空,那麼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...