帶頭結點的單向迴圈鍊錶
#include
#include
#include
"headlist.h"
/* 功能:建立乙個空鍊錶
引數:無
返回值:
失敗返回null
成功返回頭結點的位址
*/list *
createlklist()
list->first =
null
; list->last =
null
; list->n =0;
//現在還是空鍊錶
return list;}/*
功能:往煉表中插入乙個元素
引數:@list 頭結點的位址
@x 待插入的資料
返回值:無
*/void
insert
(list * list,elemtype x)
else
//首尾相連
list->last->next = list->first;
list->n ++;}
void
printflklist
(list * l)
printf
("\n");
}void
cleanlist
(list *list)
list->first=list->last=
null
; list->n =0;
}void
destroylist
(list * list)
intfind
(list * list,elemtype x)
p = p->next;
}return0;
}//有序
void
insertelem
(list * list,elemtype x)
r = q;
q = q->next;}if
(i == list->n)
//沒找到
else
if(q == list->first)
//第乙個就比我大
else
//中間位置
list->n ++;}
void
delete
(list * list,elemtype x)
r = p;
p = p->next;}if
(in)
//找到了
else
if(p == list->last)
//刪除的是最後乙個
else
//中間
list->n --;}
}//約瑟夫問題
intjoseph
(int n,
int m)
p = q;
}int x = list->first->data;
printflklist
(list)
;destroylist
(list)
;return x;
}
建立鍊錶(帶頭 單向 不迴圈)
第一次嘗試 這是 h 部分的 pragma once 使用這種方式來重新命名資料型別,這樣可以很方便的修改後續資料的資料型別,相當於 define的作用 typedef int listtype 建立資料節點 typedef struct listnode listnode 建立頭結點 typede...
資料結構 電話本 鍊錶 帶頭結點
簿 功能 儲存,插入,刪除,輸出 號碼資訊,include include 宣告函式原型 struct link delnode struct link head,int n 刪除節點 struct link addnode struct link head,int n 插入節點 int displ...
鍊錶 帶頭結點的雙向迴圈鍊錶
還需改進 creat node這個函式應有返回型別,來判斷新建結點是否成功,不然主函式中不管成不成功都會訪問該節點成員。改了這個函式,在主函式中create node後要判斷是否成功,不成功就提示並退出函式,退出前別忘了還要釋放鍊錶!同時create link這個函式中也要判斷head是否申請成功,...