typedef struct phone_book {
char name[10];
char sex[5];
char addr[20];
int year;
long phone_num;
struct phone_book *pNext;
} Book, *pBook;
add_linkman:尾插法新增多筆,支援空鏈表與非空鏈表。remove_linkman:按姓名刪除,處理尾節點與中間節點釋放。traver_linkman:遍歷列印所有節點。empty_linkman:逐個釋放節點記憶體。amend_linkman:按姓名查找並修改所有欄位。search_linkman:按姓名查找單筆顯示。void start(pBook *phead) {
int i = -1;
while (1) {
printf("1.新增 2.刪除 3.查找 4.修改 5.顯示 6.清空 0.退出\n");
scanf("%d", &i);
switch(i) {
case 1: *phead = add_linkman(*phead); break;
case 2: *phead = remove_linkman(*phead); break;
case 3: search_linkman(*phead); break;
case 4: *phead = amend_linkman(*phead); break;
case 5: traver_linkman(*phead); break;
case 6: empty_linkman(*phead); break;
case 0: exit(0);
default: printf("選擇錯誤\n");
}
}
}
head->pNext 指向首筆資料。malloc 配置新節點,assert 檢查配置成功。strcmp 比對姓名。empty_linkman 釋放後將前驅 pNext 置 NULL,避免懸空指標。文中提供完整單檔實作,含 main() 呼叫 start(&head),可直接編譯執行。