一、特點
讓鍊錶的最後乙個結點的next指標指向頭結點。初始化小節點時直接讓next指標指向鍊錶的頭結點。
二、**
#include
#include
#include
//小結點
typedef
struct listnode
listnode;
//鍊錶結點
typedef
struct circularlist
circularlist;
//資料
typedef
struct person
person;
//輸出函式指標
typedef
void
(*print)
(listnode*);
void
myprint
(listnode* data)
//比較函式指標
typedef
int(
*compared)
(listnode*
,listnode*);
intmycompared
(listnode* data1 ,listnode* data2)
else
return-1
;}//迴圈鍊錶初始化
circularlist*
init_circularlist()
//迴圈鍊錶的插入
void
insert_circularlist
(circularlist* list ,
int pos ,listnode* data)
if(pos<
0||pos>list->size)
//插入
data->next =
&(list->head)
; listnode* pcur1 =
&(list->head)
;for
(int i =
0; i < pos ; i++
) data->next = pcur1->next;
pcur1->next = data;
list->size++;}
//迴圈鍊錶的值刪除
void
valuedelete
(circularlist* list,listnode* data,compared mycompared)
if(data ==
null
)//刪除
listnode* pcur1 =
&(list->head)
; listnode* pcur2 =
null
;int flag =-1
;for
(int i=
0; isize; i++
)else
pcur1=pcur1->next;}if
(flag ==-1
)else
}//迴圈鍊錶的位置刪除
void
posdelete
(circularlist* list ,
int pos)
if(pos<
0||pos>list->size)
//刪除
listnode* pcur =
&(list->head)
;for
(int i =
1;i) pcur->next = pcur->next->next;
list->size--;}
//迴圈鍊錶的列印
void
print_circularlist
(circularlist* list , print myprintf)
//列印
listnode* pcur = list->head.next;
for(
int i =
0; i <
(list->size)*2
; i++
)//迴圈的次數 (list->size)*2}}
//迴圈鍊錶的長度
intsize_circular
(circularlist* list)
//兩個迴圈鍊錶的合併
void
twolist
(circularlist* list1 ,circularlist* list2)
//合併
listnode* list1_lastnode = list1->head.next;
//list1的最後乙個結點
for(
int i =
1; isize ; i++
) listnode* list2_lastnode = list2->head.next;
//list2的最後乙個結點
for(
int i =
1; isize ; i++
) list1_lastnode->next = list2->head.next;
//將list1的最後乙個結點指向list2第乙個結點
list2_lastnode->next =
&(list1->head)
;//將list2最後乙個結點指向list1的頭結點
list1->size = list1->size + list2->size;
//長度
}//迴圈鍊錶的清空
void
emptylist
(circularlist* list)
list->size =0;
}//迴圈鍊錶的記憶體釋放
void
freespace
(circularlist* list)
free
(list);}
intmain()
迴圈鍊錶,雙向鍊錶
迴圈鍊錶 迴圈鍊錶與順序鍊錶之間的區別 迴圈鍊錶最後乙個資料的next指標域不為空,而是指向頭結點,其他基本操作大體相同,只是在判斷表結束的條件變為判斷節點的引用域是否為頭引用 雙向鍊錶 author neosong date oct 10,2017 4 43 01 pm program of in...
鍊錶之迴圈鍊錶
單向鍊錶 鍊錶之單向鍊錶 迴圈鍊錶是單向鍊錶的變化形式。單向鍊錶的尾部的指標域是空的,而迴圈鍊錶的尾部指標是指向鍊錶的頭結點的,其結構如圖一所示。圖 一循 環鏈表結 構圖一 迴圈鍊錶結構 圖一迴圈鍊錶 結構從上面結構可以看出,迴圈鍊錶的節點形成了乙個圈。在進行遍歷時,可以從任意節點開始。如果記錄了尾...
鍊錶 雙向迴圈鍊錶
雙向迴圈鍊錶與單鏈表一樣,都是邏輯連續 物理不連續的儲存方式,但它的效果要遠遠優於單鏈表,其結構如下 雙向迴圈鍊錶首先要有乙個頭節點,頭節點中不存放資料,真正的資料從頭節點的下乙個節點開始存放 然後每乙個節點都有兩個指標,分別指向前乙個節點和後乙個節點 最後頭尾相連,就成了雙向迴圈鍊錶。includ...