首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言基礎

C語言單鏈表綜合實例:菜單驅動的增刪查改系統

     編輯:C 語言基礎

單鏈表完整操作演示程式

本程式整合了單鏈表的建立、查找、插入、刪除、列印等核心操作,並提供文字選單介面供使用者互動測試。適合初學者理解鏈表在實際應用中的完整流程。

核心資料結構

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();
        }
    }
}

學習重點

  1. 單鏈表只有 next 指針,刪除時必須先找到前驅節點(search2)。
  2. 頭節點不存放有效資料,便於統一處理首節點插入/刪除。
  3. 選單迴圈使用 while(1) 配合 switch 實現持續互動。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved