本程式整合了單鏈表的建立、查找、插入、刪除、列印等核心操作,並提供文字選單介面供使用者互動測試。適合初學者理解鏈表在實際應用中的完整流程。
typedef struct node {
char name[20];
struct node *link;
} stud;
creat(n):建立含頭節點的單鏈表,輸入 n 筆姓名。search(h, x):依姓名查找節點,回傳節點指標。search2(h, x):查找目標節點的前驅節點(供刪除用)。insert(p):在節點 p 後插入新節點。del(x, y):刪除節點 y,x 為其前驅。print(h):順序輸出所有節點姓名。void menu(void) {
system("cls");
printf("\t\t\t單鏈表C語言實現實例\n");
printf("\t\t|--------------------|\n");
printf("\t\t| [1] 建立新表 |\n");
printf("\t\t| [2] 查找數據 |\n");
printf("\t\t| [3] 插入數據 |\n");
printf("\t\t| [4] 刪除數據 |\n");
printf("\t\t| [5] 列印數據 |\n");
printf("\t\t| [6] 退出 |\n");
printf("\t\t|--------------------|\n");
printf("\t\t請輸入選項(1-6):");
}
int main() {
int choose;
stud *head = NULL, *searchpoint, *forepoint;
char fullname[20];
while (1) {
menu();
scanf("%d", &choose);
switch (choose) {
case 1: head = creat(N); break;
case 2:
printf("輸入查找姓名:"); scanf("%s", fullname);
searchpoint = search(head, fullname);
if (searchpoint) printf("找到:%s\n", searchpoint->name);
getchar(); getchar(); break;
case 3:
printf("輸入要插入在誰之後:"); scanf("%s", fullname);
searchpoint = search(head, fullname);
if (searchpoint) insert(searchpoint);
print(head);
getchar(); getchar(); break;
case 4:
print(head);
printf("輸入要刪除的姓名:"); scanf("%s", fullname);
searchpoint = search(head, fullname);
forepoint = search2(head, fullname);
if (searchpoint && forepoint) del(forepoint, searchpoint);
break;
case 5: print(head); getchar(); getchar(); break;
case 6: exit(0);
default: printf("輸入錯誤!\n"); getchar();
}
}
}
next 指針,刪除時必須先找到前驅節點(search2)。while(1) 配合 switch 實現持續互動。