1、#include#includeconio。h /输入函数getch的头文件,不能用getchar,具体请查看两者的区别include /申请空间的函数malloc的头文件typedef struct /定义结构体类型,包含四项内容,可以自由添加int num;char name10;int age;char sex5;st;typedef struct node /构造结点 (也是结构体变量)st data; /数据域struct node next; /指针域(指向结构体,也就是自身)list; list *create() /建立一个单链表list *p,r,head; /定义结构体指针
2、变量int i,n;head = (list )malloc(sizeof(list)); /申请头结点r = head;headnext = NULL; /头结点的指针域先定义为空printf(请输入学生人数:n);scanf(d,n);printf(请输入学生个人信息:nn学号,姓名,年龄,性别n);for(i=1;i=n;i+)p = (list )malloc(sizeof(list)); /申请一个结点scanf(ds%d%s,&p-data.num,pdata.name,&pdata。age,&p-data。sex); /向结点的数据域输入学生信息pnext = NULL;r-ne
3、xt = p; /将头结点指向第一个结点,以此类推。r = r-next;return (head); /返回头结点的地址void output(list h) / 输出链表中的学生信息list *p;p = hnext; /使p指向第一个结点if(p = NULL) printf(-学生信息为空-nn);while(p!=NULL)printf(”学号,姓名,年龄,性别分别是:n);printf(d,%s,d,sn”,pdata。num,pdata。name,pdata。age,pdata.sex);p = p-next;void research(list h) /查找链表中某一位学生信息
4、list p; int k;p = h-next; /使p指向第一个结点printf(请输入要查找学生的学号:n”);scanf(%d”,k);while(p & p-data.num!=k)p = pnext; /找到学号为k的结点,如果没有,则p为空if(p)printf(学号,姓名,年龄,性别为:n”);printf(d,s,d,sn”,pdata.num,pdata.name,p-data.age,p-data。sex);elseprintf(”找不到此学生:n);void insert(list h) / 插入一个学生信息到链表中 (插到链表末尾)list p,q,*r;p = hn
5、ext;r = h;q = (list *)malloc(sizeof(list)); /申请一个新结点printf(”请输入插入学生的学号,姓名,年龄,性别:n);scanf(”%d%s%d%s”,&qdata.num,qdata。name,&q-data.age,qdata.sex);q-next = NULL;while(p!=NULL)r = p;p = pnext;rnext = q;void dele(list h) / 在链表中删除某一位学生信息int k;list p,r;r = h;p = h-next;printf(”请输入要删除学生的学号:n”);scanf(”d,k);
6、while(p & p-data。num!=k)r = p; /找到学号为k的结点,如果没有,则p为空p = pnext;if(p)rnext = pnext;pnext = NULL;free(p);printf(”学生信息已删除!nn”);elseprintf(”找不到此学生nn”);int main()int i,j=1;list p;char c = 13; /13是回车键的ASCII值printf(-n”);printf( 学生信息管理系统 n);printf(”-n”);while(c=13)printf( 1,登记学生信息n);printf( 2,浏览学生信息n);printf( 3,查找学生信息n);printf( 4,插入学生信息n”);printf(” 5,删除学生信息n);printf(”-n”);printf(”请输入你的选择:n”);scanf(%d,&i);switch(i)case 1: p = create();break; /调用各函数,实现功能case 2: output(p);break;case 3: research(p);break;case 4: insert(p);break;case 5: dele(p); break;printf(”-继续请敲回车!-n”);c = getch();return 0;