c語言 鏈表使用示例


  1 #include<stdio.h>
  2 #include<stdlib.h>
  3 #include<string.h>
  4 typedef struct list{
  5     struct list *next;
  6     char name[30];//用戶名稱
  7     char addr[50];//地址
  8     char num[8];//號碼 
  9 }user;
 10  
 11 void insert(user *h);
 12 void edit(user *h);
 13 void del(user *h);
 14 void S_byName(user *h);
 15 void S_byNum(user *h);
 16 void display(user *h);
 17  
 18 int main()
 19 {
 20     int flag;
 21     user *head=(user *)malloc(sizeof(user));
 22     head->next=NULL;
 23     while(1)
 24     {
 25         printf("電話號碼目錄系統\n");
 26         printf("    1、添加新電話用戶信息\n");
 27         printf("    2、修改電話用戶信息\n");
 28         printf("    3、刪除已有電話用戶信息\n");
 29         printf("    4、根據用戶名查詢電話信息\n");
 30         printf("    5、根據電話號碼查詢用戶信息\n");
 31         printf("    6、顯示全部用戶信息\n");
 32         printf("    7、退出\n");
 33         printf("請選擇:");
 34         scanf("%d",&flag);
 35         if(flag==1)
 36             insert(head);
 37         else if(flag==2)
 38             edit(head);
 39         else if(flag==3)
 40             del(head);
 41         else if(flag==4)
 42             S_byName(head);
 43         else if(flag==5)
 44                S_byNum(head);
 45           else if(flag==6)
 46             display(head);
 47         else if(flag==7)
 48             return 0;
 49         else
 50             printf("輸入有誤,請重新選擇!\n");
 51     }
 52 }
 53 void insert(user *h)
 54 {
 55     user *p=(user *)malloc(sizeof(user));
 56     p->next=h->next;
 57     h->next=p;
 58     printf("請輸入新增用戶名稱(最多30個字):");
 59     scanf("%s",p->name);
 60     printf("請輸入新增用戶的家庭住址(最多50字):");
 61     scanf("%s",p->addr);
 62     printf("請輸入新增用戶的電話號碼(8位數):");
 63     scanf("%s",p->num);
 64     printf("新用戶記錄成功添加:%s  %s  %s\n\n",p->name,p->addr,p->num);
 65 }
 66 void edit(user *h)
 67 {
 68     char name[30];
 69     int flag=0;
 70     user *lh=h->next;
 71     printf("輸入要修改用戶的名稱:");
 72     scanf("%s",name);
 73     while(lh)
 74     {
 75         if(strcmp(name,lh->name)==0)
 76         {
 77             flag=1;
 78             printf("請輸入新的名稱(30字以內):");
 79             scanf("%s",lh->name);
 80             printf("請輸入新的地址(50字以內):");
 81             scanf("%s",lh->addr);
 82             printf("請輸入新的號碼(8位):");
 83             scanf("%s",lh->num); 
 84             printf("用戶記錄修改成功:%s  %s  %s\n\n",lh->name,lh->addr,lh->num);
 85             break;
 86         }
 87         lh=lh->next;
 88     }
 89     if(!flag)
 90         printf("不存在這樣的用戶\n\n");
 91 }
 92 void S_byName(user *h)
 93 {
 94     char name[30];
 95     int flag=0;
 96     user *lh=h->next;
 97     printf("輸入要查找的用戶名稱:");
 98     scanf("%s",name);
 99     while(lh)
100     {
101         if(strcmp(name,lh->name)==0)
102         {
103             flag=1;
104             printf("用戶信息為:%s  %s  %s\n\n",lh->name,lh->addr,lh->num);
105             break;
106         }
107         lh=lh->next;
108     }
109     if(!flag)
110         printf("用戶名不存在\n\n");
111 }
112 void S_byNum(user *h)
113 {
114     char num[30];
115     int flag=0;
116     user *lh=h->next;
117     printf("輸入要查找的電話號碼:");
118     scanf("%s",num);
119     while(lh)
120     {
121         if(strcmp(num,lh->num)==0)
122         {
123             flag=1;
124             printf("用戶信息為:%s  %s  %s\n\n",lh->name,lh->addr,lh->num);
125             break;
126         }
127         lh=lh->next;
128     }
129     if(!flag)
130         printf("找不到匹配的號碼\n\n");
131 }
132 void display(user *h)
133 {
134     user *lh=h->next;
135     int i=1;
136     while(lh)
137     {
138         printf("第%d條用戶信息:%s  %s  %s\n",i,lh->name,lh->addr,lh->num);
139         lh=lh->next;
140         i++;
141     }
142     printf("\n");
143 }
144 void del(user *h)
145 {
146     char name[30];
147     int flag=0;
148     user *lh=h;
149     printf("輸入要刪除的用戶名稱:");
150     scanf("%s",name);
151     while(lh->next)
152     {
153         if(strcmp(name,lh->next->name)==0)
154         {
155             flag=1;
156             printf("刪除用戶成功:%s  %s  %s\n\n",lh->next->name,lh->next->addr,lh->next->num);
157             lh->next=lh->next->next;
158             break;
159         }
160         lh=lh->next;
161     }
162     if(!flag)
163         printf("用戶名不存在\n\n");
164 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM