您好,欢迎访问三七文档
数据结构第一次作业1.源程序#includestdio.h#includemalloc.h#includestring.h#includestdlib.h#includeiostreamtypedefstruct{intno;charname[100];charSnumber[20];charPnumber[20];charQQ[20];charsex[50];}student;//学生信息的类型typedefstudentelemptype;typedefstructnode{elemptypedata;structnode*next;}linklist;//定义单链表linklist*head;//定义单链表头intstart()//控制linklist*creatlist()的结束{charn[10]=end;charstr1[10];printf(结束输入end,否则请按回车!\n\n);printf(请输入:);gets(str1);printf(\n\n);if(strcmp(n,str1)==0){getchar();return(0);}else{getchar();return(1);}}linklist*creatlist(){inta;charch[10];elemptypex;linklist*head,*r,*p;p=(linklist*)malloc(sizeof(linklist));head=p;p-next=NULL;r=p;while(1){printf(\n请输入学号:\n);scanf(%d,&x.no);printf(\n请输入姓名:\n);scanf(%s,&x.name);getchar();printf(\n请输入专业\n);scanf(%s,&x.Snumber);getchar();printf(\n请输入电话号码\n);scanf(%s,&x.Pnumber);getchar();printf(\n请输入QQ\n);scanf(%s,&x.QQ);getchar();printf(\n请输入性别\n);scanf(%s,&x.sex);getchar();p=(linklist*)malloc(sizeof(linklist));p-data=x;p-next=NULL;r-next=p;r=r-next;a=start();if(a==0)break;system(pause);system(cls);}return(head);}voidinsert(linklist*head,intx,elemptypey){linklist*q,*p,*r;r=(linklist*)malloc(sizeof(linklist));r-data=y;if(head-next==NULL){head-next=r;r-next=NULL;}else{q=head;p=head-next;while((p!=NULL)&&(p-data.no!=x)){q=p;p=p-next;}if(p!=NULL){q-next=r;r-next=p;}else{q-next=r;r-next=NULL;}}}linklist*del(linklist*head,inti){intj=0;linklist*p,*s,*q;p=head;j=0;while((p-next!=NULL)&&(ji-1)){p=p-next;j++;}if(p-next!=NULL){q=p-next;p-next=p-next-next;free(q);}elsereturnNULL;s=head;returns;}linklist*locate(linklist*head,intk){linklist*s;s=head-next;while(s!=NULL)if(s-data.no!=k)s=s-next;elsebreak;returns;}linklist*get(linklist*head,inti){intj;linklist*p;p=head;j=0;while((p-next!=NULL)&&(ji)){p=p-next;j++;}if((i==j)&&(i!=0))returnp;elsereturnNULL;}voidoutlin(linklist*h){linklist*p;p=h-next;while(p!=NULL){printf(%d,%s,%s,%s,%s,%s\n,p-data.no,p-data.name,p-data.Snumber,p-data.Pnumber,p-data.QQ,p-data.sex);p=p-next;}printf(\n输出结束\n);}voidMenu_one()//主菜单{printf(\n\n\n\n\n\n\n);printf(*************************************************\n);printf(存储学生信息的线性表\n\n);printf(1、用单链表来创建\n);printf(2、用顺序表来创建\n);printf(3、返回\n);printf(**************************************************\n);printf(\n\n\n\t\t);}voidMenu_two_2()//次菜单{printf(\n\n\n\n\n\n\n);printf(*************************************************\n);printf(用单链表存储学生信息\n\n);printf(1、录入学生信息(只能录入一次!)\n);printf(2、往线性表插入一个信息\n);printf(3、在线性表中删除一个信息\n);printf(4、按值检索\n);printf(5、按序号检索\n);printf(6、遍历线性表\n);printf(7、退出\n);printf(**************************************************\n);printf(\n\n\n\t\t);}voidmain_switch_2(charj){inti;linklist*k;elemptypem,n;inta,b;switch(j){case'1':{printf(请添加学生信息\n);head=creatlist();outlin(head);system(pause);system(cls);}break;case'2':{printf(\n在第几个信息之前插入?(输入学号));printf(\n请输入:);scanf(%d,&m.no);printf(\n\n\n准备插入的新信息\n\n\n);printf(\n请输入学号:\n);scanf(%d,&n.no);printf(\n请输入姓名:\n);scanf(%s,&n.name);printf(\n请输入专业\n);scanf(%s,&n.Snumber);printf(\n请输入电话号码\n);scanf(%s,&n.Pnumber);printf(\n请输入QQ\n);scanf(%s,&n.QQ);printf(\n请输入性别\n);scanf(%s,&n.sex);insert(head,m.no,n);printf(\n\n新的学生信息表\n);outlin(head);system(pause);system(cls);}break;case'3':{outlin(head);printf(\n请输入要删除第几个信息:\n);scanf(%d,&a);printf(\n新的信息表\n);del(head,a);outlin(head);system(pause);system(cls);}break;case'4':{printf(\n请输入你要查找的学号:\n);scanf(%d,&a);k=locate(head,a);printf(%d,%s,%s,%s,%s,%s\n,k-data.no,k-data.name,k-data.Snumber,k-data.Pnumber,k-data.QQ,k-data.sex);system(pause);system(cls);}break;case'5':{printf(\n请输入你要查找的序号:\n);scanf(%d,&a);k=get(head,a);printf(%d,%s,%s,%s,%s,%s\n,k-data.no,k-data.name,k-data.Snumber,k-data.Pnumber,k-data.QQ,k-data.sex);system(pause);system(cls);}break;case'6':{printf(\n学生信息表\n\n);outlin(head);system(pause);system(cls);}break;case'7':exit(0);}}intmain1(){chara[100];head=(linklist*)malloc(sizeof(linklist));head-next=NULL;//生成头结点while(1){Menu_two_2();printf(\n\t请输入功能编号:);gets(a);system(pause);system(cls);if(a[1]!='\0'){printf(\n输入错误\n);system(pause);system(cls);continue;}else{if(a[0]=='0')break;main_switch_2(a[0]);}}return0;}//-------以下为顺序表的函数--------------------------------------------------usingnamespacestd;structstudent1{intid;//学号charname[30];//姓名charsex[2];//性别charPnumber[20];charQQ[20];floatgread;//成绩};typedefstructstudent1DataType;//指定structstudent为DataTypestructSeqList{intMAX;//顺序表中最大元素的个数intcount;//存放线性表中元素的个数count=MAXLENGTHDataType*element;//element[0],element[1],...,element[n-1]存放线性表中的元素DataType*m;};typedefstructSeqList*MySeqList;//初始化并创建空顺序表//功能:在顺序表中求某元素的下标,没有查找到,则返回-1intlocateSeqList(MySeqListmySeqList,intid){for(inti=0;imySeqList-count;++i)if(mySeqList-element[i].id==id)//传入一个元素x,查找到后返回下标ireturn(i);return(-1);}intupdateSeqList(MySeqListmySeqList,intid)//学生信息修改{intiRc=locateSeqList(mySeqList,id);if(iRc==-1){printf(不存在指定下标!\n);return(0);}cout姓名:;cinmySeqList-element[iRc].name;cout学号:;cinmySeqList-element[iRc].id;cout性别:;cinmySeqList-element[
本文标题:数据结构第一次作业
链接地址:https://www.777doc.com/doc-5115069 .html