为了账号安全,请及时绑定邮箱和手机立即绑定

急!在线等, 数据结构单链表的插入信息这段代码有什么问题??

急!在线等, 数据结构单链表的插入信息这段代码有什么问题??

C
奕吉啊 2017-03-27 22:46:21
/* 实现单链表的基本功能: 1. 利用scanf输入5个学生信息并打印 2. 在第i个学生前面插入一个新的学生 3. 删除第i个学生 */ #include<stdio.h> #include<stdlib.h> typedef struct student{ int num; int phone; char name[10]; struct student *next; }struct_t; int main(){ int i=1,m,n; struct_t *p1; struct_t *p2; struct_t *p3; struct_t *p4; struct_t *p5; struct_t *p6; printf("请输入5个学生的信息:\n"); p5=(struct_t *)malloc(sizeof(struct_t)); scanf("%s%d%d",p5->name,&p5->num,&p5->phone); p5->next=NULL; p4=(struct_t *)malloc(sizeof(struct_t)); scanf("%s%d%d",p4->name,&p4->num,&p4->phone); p4->next=p5; p3=(struct_t *)malloc(sizeof(struct_t)); scanf("%s%d%d",p3->name,&p3->num,&p3->phone); p3->next=p4; p2=(struct_t *)malloc(sizeof(struct_t)); scanf("%s%d%d",p2->name,&p2->num,&p2->phone); p2->next=p3; p1=(struct_t *)malloc(sizeof(struct_t)); scanf("%s%d%d",p1->name,&p1->num,&p1->phone); p1->next=p2; struct_t *p=p1; printf("序号\t姓名\t学号\t电话号码\n");//输入5个学生信息后,输出学生的信息 while(p != NULL){ printf("%d\t%s\t%d\t%d\n",i,p->name,p->num,p->phone); p = p->next; i++; } //插入信息 printf("在第几位学生前添加信息?\n"); scanf("%d",&m); printf("请输入信息:\n"); switch(m){ case 1:{ p6=(struct_t *)malloc(sizeof(struct_t)); scanf("%s%d%d",p6->name,&p6->num,&p6->phone); p6->next=p1;    }break; case 2:{ p6=(struct_t *)malloc(sizeof(struct_t)); scanf("%s%d%d",p6->name,&p6->num,&p6->phone); p1->next=p6; p6->next=p2;    }break; case 3:{ p6=(struct_t *)malloc(sizeof(struct_t)); scanf("%s%d%d",p6->name,&p6->num,&p6->phone); p2->next=p6; p6->next=p3;    }break; case 4:{ p6=(struct_t *)malloc(sizeof(struct_t)); scanf("%s%d%d",p6->name,&p6->num,&p6->phone); p3->next=p6; p6->next=p4;    }break; case 5:{ p6=(struct_t *)malloc(sizeof(struct_t)); scanf("%s%d%d",p6->name,&p6->num,&p6->phone); p4->next=p6; p6->next=p5;    }break; default :printf("无此学生\n");break; } if(m != 1) struct_t *p=p1; else struct_t *p=p6; i=1; printf("序号\t姓名\t学号\t电话号码\n");//插入1位学生的信息后,输出学生的信息 while(p != NULL){ printf("%d\t%s\t%d\t%d\n",i,p->name,p->num,p->phone); p = p->next; i++; } //删除信息 p=p1; printf("删除第几位学生的信息?\n"); scanf("%d",&n); switch(n){ case 1:{ p1->next=NULL;p=p2; break;    } case 2:{ p1->next=p3;p=p1; break;    } case 3:{ p2->next=p4;p=p1; break;    } case 4:{ p3->next=p5;p=p1; break;    } case 5:{ p4->next=p6;p=p1; break;    } case 6:{ p5->next=NULL;p=p1; break;    } default :printf("无此学生\n");break; }      i=1; printf("序号\t姓名\t学号\t电话号码\n");//删除1位学生的信息后,输出学生的信息 while(p != NULL){ printf("%d\t%s\t%d\t%d\n",i,p->name,p->num,p->phone); p = p->next; i++; } free(p1); free(p2); free(p3); free(p4); free(p5); free(p6); return 0; }
查看完整描述

1 回答

已采纳
?
陈十四

TA贡献36条经验 获得超13个赞

逻辑看着没问题啊??难道有什么问题吗

查看完整回答
反对 回复 2017-03-28
  • 1 回答
  • 0 关注
  • 940 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信