#include#include/*結點的資料結構*/
typedef struct nodenode,* pnode;
/*迴圈鍊錶的資料結構*/
typedef struct linklistlinklist,* clinklist;
/*初始化迴圈鍊錶*/
bool initlist(clinklist &l)
l->head->next = l->head;//初始化head指標和tail指標,都指向頭結點
l->tail = l->head;
l->length = 0;
return true;
}/*頭插法建立迴圈鍊錶*/
void create_h(clinklist &l, int x)
else
++l->length;
printf("採用頭插法建立迴圈鍊錶,建立成功!!\n");
return; }}
/*尾插法建立迴圈鍊錶*/
void create_t(clinklist &l, int x)
else }
/*遍歷鍊錶*/
void showlist(clinklist l)
pnode s = (pnode)malloc(sizeof(node));
s = l->head->next;
printf("鍊錶的元素為:");
while (l->head != s)
printf("\n");
return;
}/*顯示尾結點的元素*/
void showtail(clinklist l)
/*對無序鍊錶進行排序*/
void sortlist(clinklist &l)
pnode p = l->head->next;
pnode q = p->next;
int temp = 0;
for (int i = 0; i < l->length - 1; i++, p = l->head->next, q = p->next)
}} return;
}/*在有序表中插入元素*/
void insert_val(clinklist &l, int x)
s->data = x;
q->next = s;
s->next = p;
if (l->head == p)//如果是在尾部插入,需改變尾指標和尾節點的next指向 }
/*查詢元素*/
pnode find(clinklist l, int x)
if (l->head == p->next)
return p;
}/*刪除指定元素的值*/
void del_value(clinklist &l, int x)
pnode p = (pnode)malloc(sizeof(node));
p = find(l, x);
pnode q = (pnode)malloc(sizeof(node));
q = null;
if (null != p)
else
free(q);
l->length--;
printf("%d已經刪除!!\n", x);
return;
} else }
/*刪除除頭結點外的所有結點的*/
void clear(clinklist &l)
l->tail = l->head;
l->head->next = l->head;
l->length = 0;
printf("鍊錶已被清空!!\n");
}/*摧毀鍊錶*/
void destroy(clinklist &l)
int main()
else
//建立鍊錶
printf("--------建立鍊錶\n");
printf("1-頭插法建立鍊錶,2-尾插法建立鍊錶\n");
int selection = 0;
int size = 0;
int value = 0;
printf("請輸入你的選擇以及建立鍊錶的長度:");
scanf("%d %d",&selection,&size);
switch (selection)
break;
case 2:
for (int i = 0; i < size; i++)
break;
default:
printf("你輸入的選擇有誤!!\n");
break;
} //輸出鍊錶的元素
printf("--------列印鍊錶\n");
showlist(l);
//顯示尾結點的元素
printf("--------列印尾部鍊錶元素\n");
showtail(l);
printf("\n");
//對鍊錶進行排序
printf("--------對鍊錶進行排序\n");
sortlist(l);
showlist(l);
//在有序鍊錶裡面插入資料
printf("--------有序鍊錶裡面插入資料\n");
printf("請輸入你要插入的元素的值:");
scanf("%d", &value);
insert_val(l, value);
showlist(l);
//查詢元素
printf("--------查詢元素\n");
printf("請輸入你要查詢的元素的值:");
scanf("%d", &value);
if (find(l, value))
else
//刪除指定元素
printf("--------刪除指定元素\n");
printf("請輸入你要刪除的元素的值:");
scanf("%d", &value);
del_value(l, value);
showlist(l);
//摧毀鍊錶
printf("--------摧毀鍊錶\n");
destroy(l);
system("pause");
return 0;
}
資料結構 迴圈鍊錶相關操作
include iostream include cstdlib using namespace std define true 1 define false 0 define ok 1 define error 0 typedef int elemtype typedef int status t...
資料結構(二)鍊錶的相關操作
以下是我在學習鍊錶及其相關介面操作時寫的 1.函式定義的 c 檔案 include linkedlist.h include include include 1.初始化 銷毀 void llistinit llist llist 2.頭插 void llistpushfront llist llis...
資料結構 迴圈鍊錶
近期我在學習資料結構,於是我自己整理了單鏈表 迴圈單鏈表 雙向鍊錶 雙向迴圈鍊錶的相關 以鞏固這段時間的學習,也希望能夠幫助初學者,希望大家在閱讀以下 時發現問題糾正於我,一起 cyclinklist.h ifndef cyclinklist h define cyclinklist h inclu...