首页 > 代码库 > c语言 链表使用示例
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 }
c语言 链表使用示例
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。