1、CLS); head1=NULL; p1=(STD *)malloc(LEN); p2=p1; printf(建表方法1追加法建表!n输入学号 姓名,若输入学号为0则退出建表! scanf(%d%s,&p1-num,p1-name); while(p1-num!=0) n+; if(n=1) head1=p1; else p2-next=p1; free(p1); p2-next=NULL;%*c按回车键继续!getchar(); return ;/* 插入法建表 */void creat2(void) STD *p1; head2=NULL;建表方法2插入法建表!输入学号 姓名(输入学号以0
2、结束)! p1-next=head2; head2=p1;/* 链表输出 */void print(STD *head) STD *p; p=head; while (p!=NULL) printf(学号 %3d 姓名 %sn,p-num,p- p=p-next;链表为空!/*-*/ /*-表1插入结点函数-*/ /*-*/ void game4() char ch; STD *stud,*head=head1;system( printf(t仅限在表1中插入!t输入要插入结点的学号和姓名(以空格隔开): stud=(STD *)malloc(LEN); scanf(stud-num,& if
3、(stud-numnum head1=insert(head,stud); printf(t继续插入新结点吗?(y/n): ch=getchar(); if(ch=y|ch=Y) printf(t输入新结点学号 姓名:(输入n结束插入) stud=(STD *)malloc(LEN); scanf( else break;t输入回车键返回! getchar(); system( /*-表2插入结点函数-*/ void game2() STD *stud,*head=head2;t仅限在表2中插入! head2=insert2(head,stud);/*/* 插入模块 */STD *insert
4、(STD *head,STD *stud) STD *p0,*p1,*p2; p1=head; p0=stud; if(head=NULL) head=p0;p0- while(p0-num)&(p1-next!=NULL) p1=p1- if(p0-=p1-num) if(head=p1)head=p0; else p2-next=p0; p0- p1- n=n+1; return (head);/* 插入模块 2 */STD *insert2(STD *head,STD *stud) /*-表1删除学生信息-*/void game3() STD *head=head1;t仅限在表1中删除!
5、t输入要删除的学号:%ldnum); if(num head=head1; head1=delete(head,num);t继续删除吗?(输入n结束删除!) /*-表2删除学生信息-*/void game5() STD *head=head2;t仅限在表2中删除! head=head2; head2=delete(head,num);/* 删除模块 */STD *delete(STD*head,long num)STD *p1,*p2;if (head=NULL) printf(n没有找到该学号!return head;p1=head;while(num!num&p2=p1;p1=p1-if(
6、num=p1-if(p1=head)head=p1-next=p1-n删除:%ldn,num); n=n-1;elseprintf(n 没有发现此项! nreturn(head); /*-表1查找学生信息-*/void game1()t仅限在表1中查找!t输入要查找的学号:t输入的学号不能为负数,请重新查找! head1=search(head,num);t继续查找吗?%d(输入n结束查找) /*-表2查找学生信息-*/void game6()t仅限在表2中查找! head2=search(head,num);/* 查找模块 */STD *search(STD*head,long num)n%
7、d %sn,p1-/* void main() * 运行结果 *n creat1(); print(head1); creat2(); print(head2); */*/* select.cpp:主程序文件 *void main() handle_menu1();/*/* 菜单处理函数 *void handle_menu1() int h; for(; h=menu_select(); switch(h) case 1: /* printf(t进入追加法建表n */ break; /* 调用功能模块 */ case 2: /* printf(t进入插入法建表n creat2(); case
8、3:t输出追加法链表的结果n print(head1); case 4:t输出插入法链表的结果n print(head2); case 5:t链表1插入 n game4(); case 6:t链表2插入 n game2(); case 7:t链表1删除n game3(); case 8:t链表2删除n game5(); case 9:t链表1查找n game1(); case 10:t链表2查找n game6(); case 11:t再见,欢迎再次使用本系统!谢谢! return; /* /* 菜单选择函数: int menu_select()* int menu_select() int cn; for(; nt1.追加法建表nt2.插入法建表nt3.输出链表1nt4.输出链表2nt5.插入链表1 nt6.插入链表2 nt7.删除链表1 nt8.删除链表2 nt9.查找链表1 nt10.查找链表2 nt11.退出系统nt请您选择1-11:cn);/gets(s); /cn=atoi(s); if(cn11)nt输入错误,重选1-11: else break; return cn;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1