数据结构实验报告答案_第1页
数据结构实验报告答案_第2页
数据结构实验报告答案_第3页
数据结构实验报告答案_第4页
数据结构实验报告答案_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据结构与算法分析课程设计内容体系主要内容数据结构课程设计课程,可使学生深化理解书本知识,致力于用学过的理论知识和上机取得的实践经验,解决具体、复杂的实际问题,培养软件工作者所需的动手能力、独立解决问题的能力。该课程设计侧重软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧、多人合作,以至一整套软件工作规范的训练和科学作风的培养。一、课程设计要求学生必须仔细阅读数据结构与算法分析课程设计方案,认真主动完成课程设计的要求。有问题及时主动通过各种方式与教师联系沟通。学生要发挥自主学习的能力,充分利用时间,安排好课程设计的时间计划,并在课程设计过程中不断检测自己的计

2、划完成情况,及时的向教师汇报。课程设计按照教学要求需要两周时间完成,两周中每天(按每周5天)至少要上3-4小时的机来调试C语言设计的程序总共至少要上机调试程序30小时。二、数据结构课程设计的具体内容本次课程设计完成如下模块(共9个模块,学生可以在其中至少挑选6个功能块完成,但有*号的模块是必须要选择的)1)运动会分数统计* 实验1猴子选大王任务:一堆猴子都有编号,编号是1,2,3m,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。输入数据:输入m,nm,n为整数,nm输出形式:中文提示按照m个猴

3、子,数n个数的方法,输出为大王的猴子是几号,建立一个函数来实现此功能。实验内容:源程序:#include#includetypedefstructnodeintdata;structnode*next;ListNode;typedefListNode*LinkList;/*建立单循环链表函数*/LinkListInitRing(intn,LinkListR)ListNode*p,*q;inti;R=q=(ListNode*)malloc(sizeof(ListNode);for(i=1;idata=i;q-next=p;q=p;p-data=n;p-next=R;R=p;returnR;/*选

4、择函数*/LinkListDeleteDeath(intn,intk,LinkListR)inti,j;ListNode*p,*q;p=R;for(i=1;i=n/2;i+)for(j=1;jnext;q=p-next;p-next=q-next;printf(%4d,q-data);if(i%10=0)printf(n);free(q);R=p;returnR;/*输出函数*/voidOutRing(intn,LinkListR)inti;ListNode*p;p=R;for(i=1;inext)printf(%4d,p-data);if(i%10=0)printf(n);printf(n)

5、;printf(猴大王的号码:n);printf(4%d,p-next);/*主函数*/voidmain()LinkListR;intn,k;LinkListInitRing(intn,LinkListR);printf(猴子的总数N:);scanf(%d,&n);printf(报到要被淘汰数字K:);scanf(%d,&k);printf(被淘汰的猴子:n);R=InitRing(n,R);R=DeleteDeath(n,k,R);printf(n);OutRing(n,R);猴子的总,个数M;30扌艮到要尚决的数心9被浴汰打無丄:9LS276126719301224S222cL1裁41U1

6、L131415L7候大工射号码:kUPressanykeytocontinue实验结果:实验2订票系统任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:可以订票(订票情况可以存在一个数据文件中,结构自己设定),如果该航班已经无票,可以提供相关可选择航班;退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。修改航班信息:当航班信息改变

7、可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;实验内容:源程序:#include#include#include#include#include#include#include#defineTRUE1#defineFALSE0typedefintBOOL;#defineNEW(type,size)(type*)malloc(sizeof(type)*size)typedefstruct_date/*日期*/intm_year;intm_month;intm_day;DATE;typedefstruct_time/*时间*/intm_hour;i

8、ntm_min;TIME;typedefstruct_flight/*航班数据*/intm_fltno;/*航班号,若此成员为-1,则表示此航班未使用*/charm_szFrom30;/*起飞港*/charm_szPass30;/*途经港*/charm_szTo30;/*到达港*/TIMEm_start;/*起飞时间*/TIMEm_arrive;/*到达时间*/TIMEm_fly;/*飞行固定时间*/intm_people;/*乘客限额*/FLIGHT,*PFLIGHT;typedefstruct_passengernode/*乘客数据*/charm_szName20;/*姓名*/charm_

9、szCorp30;/*单位*/charm_szNumber19;/*身份证号,考虑到字母的情况,故使用字符串*/DATEm_Date;/*订票日期*/intm_fltno;/*航班号*/intm_seatno;/*座位号*/PASSENGER,*PPASSENGER;typedefstruct_psgnode/*乘客结点*/PASSENGERm_psg;struct_psgnode*next;NODE,*PNODE;/*清空键盘缓冲区*/voidClearBuffer(void);/*读取航班数据*/voidReadFlight(FLIGHTfltlist);/*读取乘客数据*/voidRea

10、dPassenger(PNODEpsglist);/*添加航班*/BOOLAddFlight(FLIGHTfltlist,PFLIGHTfltdata);/*删除航班*/voidDelFlight(FLIGHTfltlist,intindex);/*添加乘客*/voidAddPassenger(PNODEpsglist,PPASSENGERpsgdata);/*删除乘客*/BOOLDelPassenger(PNODEpsglist,intindex);/*清空乘客链表*/voidClearPsgList(PNODEpsglist);/*取得乘客总数*/unsignedintGetPsgCoun

11、t(PNODEpsglist);BOOLdatecmp(DATE*date1,DATE*date2);voidBook(FLIGHTfltlist,PNODEpsglist);voidquery(FLIGHTfltlist,PNODEpsglist);voidfltnumber(FLIGHTfltlist);voidpsgname(PNODEpsglist);voidfromto(FLIGHTfltlist);voidfltdat(FLIGHTfltlist,PNODEpsglist);/*保存航班数据*/voidSaveFlight(FLIGHTfltlist);/*保存乘客数据*/void

12、SavePassenger(PNODEpsglist);/*退出*/voidQuit(FLIGHTfltlist,PNODEpsglist);BOOLdatecmp(DATE*date1,DATE*date2)return(date1-m_year=date2-m_year&date1-m_month=date2-m_month&date1-m_day=date2-m_day);BOOLtimecmp(TIME*time1,TIME*time2)return(time1-m_hour=time2-m_hour&time1-m_min=time2-m_min);voidClearBuffer(v

13、oid)getchar();voidReadFlight(FLIGHTfltlist)FILE*fp;if(fp=fopen(flight.dat,rb)!=NULL)fread(fltlist,sizeof(FLIGHT),40,fp);elseinti;for(i=0;inext=NULL;elseinti,n;fread(&n,sizeof(int),1,fp);for(i=0;in;i+)PASSENGERpsg;fread(&psg,sizeof(PASSENGER),1,fp);AddPassenger(psglist,&psg);BOOLAddFlight(FLIGHTfltli

14、st,PFLIGHTfltdata)inti;BOOLbResult=FALSE;for(i=0;inext!=NULL;p=p-next)q=NEW(NODE,1);memcpy(&q-m_psg,psgdata,sizeof(PASSENGER);q-next=NULL;p-next=q;BOOLDelPassenger(PNODEpsglist,intindex)inti=0;PNODEp,q;for(p=psglist-next;p-next!=NULL;p=p-next)i+;if(p!=NULL&i=index-1)q=p-next;p-next=q-next;free(q);re

15、turnTRUE;elsereturnFALSE;voidClearPsgList(PNODEpsglist)PNODEp=psglist-next,q;while(p!=NULL&p-next!=NULL)q=p;p=p-next;free(q);unsignedintGetPsgCount(PNODEpsglist)PNODEp;unsignedints=0;for(p=psglist-next;p!=NULL;p=p-next)s+;returns;voidBook(FLIGHTfltlist,PNODEpsglist)charc=y;BOOLb;while(c=y|c=Y)inti;P

16、ASSENGERpsg;printf(请输入航班号:);scanf(%d,&psg.m_fltno);while(psg.m_fltno=10000|psg.m_fltno0)printf(请重新输入:);scanf(%d,&psg.m_fltno);for(i=0;i40;i+)if(fltlisti.m_fltno=psg.m_fltno)PNODEp;BOOL*q;intj;printf(请输入订票日期:(yyyy,mm,dd);scanf(%d,%d,%d,&psg.m_Date.m_year,&psg.m_Date.m_month,&psg.m_Date.m_day);q=NEW(i

17、nt,fltlisti.m_people);for(j=0;jnext;p!=NULL;p=p-next)if(datecmp(&p-m_psg.m_Date,&psg.m_Date)&psg.m_fltno=p-m_psg.m_fltno)qp-m_psg.m_seatno-1=TRUE;printf(以下座位尚未有人订:);for(j=0;j0&psg.m_seatno=fltlisti.m_people+1)if(!qpsg.m_seatno-1)b=TRUE;break;elseprintf(这个座位有人了!);elseprintf(数据非法!);scanf(%d,&psg.m_sea

18、tno);while(!b);printf(请输入乘客姓名:);scanf(%s,psg.m_szName);printf(请输入乘客单位:);scanf(%s,psg.m_szCorp);printf(请输入乘客身份证号:);scanf(%s,psg.m_szNumber);AddPassenger(psglist,&psg);printf(您的订票已成功。);free(q);c=getchar();voidquery(FLIGHTfltlist,PNODEpsglist)for(;)charc;system(cls);printf(航班查询n);printf(n);printf(l.按航班

19、号查询n);printf(2.按姓名查询乘客n);printf(3.按起飞、到达港查询n);printf(4.按日期查询航班情况n);printf(5.返回n);printf(n请选择1-5:);c=getchar();switch(c)case1:fltnumber(fltlist);break;?o?case2:psgname(psglist);break;case3:fromto(fltlist);break;case4:fltdat(fltlist,psglist);break;,厂,case5:break;default:continue;if(c=5)break;voidfltnu

20、mber(FLIGHTfltlist)charc=y;while(c=y|c=Y)BOOLb=FALSE;intfltno,i;printf(可以查询的航班号:);for(i=0;i40;i+)if(fltlisti.m_fltno!=-1)b=TRUE;printf(%d,fltlisti.m_fltno);if(!b)printf(无n按任意键返回。);getch();return;printf(n请输入要查询的航班号:);scanf(%d,&fltno);for(i=0;inext;p!=NULL;p=p-next)if(strcmp(p-m_psg.m_szName,name)=0)b

21、=TRUE;printf(姓名:%s单位:%s身份证号:sn,p-m_psg.m_szName,p-m_psg.m_szCorp,p-m_psg.m_szNumber);printf(订票日期:d-%d-%d,p-m_psg.m_Date.m_year,p-m_psg.m_Date.m_month,p-m_psg.m_Date.m_day);printf(航班号:%d座位号:%d,p-m_psg.m_fltno,p-m_psg.m_seatno);break;if(!b)printf(查无此人,按任意键退出);getch();return;printf(是否继续查询?(y/n);ClearBu

22、ffer();c=getchar();voidfromto(FLIGHTfltlist)charc=y;while(c=y|c=Y)BOOLb=FALSE;charfrom30,to30;inti;printf(请输入起飞港:);scanf(%s,from);printf(请输入到达港:);scanf(%s,to);for(i=0;i40;i+)if(strcmp(fltlisti.m_szFrom,from)=0)if(strcmp(fltlisti.m_szTo,to)=0)b=TRUE;break;if(b)printf(%s-%s-%sn,fltlisti.m_szFrom,fltli

23、sti.m_szPass,fltlisti.m_szTo);printf(起飞时间:2d:%02d到达时间:2d:%02d飞行固定时间:2d:%02dn,fltlisti.m_start.m_hour,fltlisti.m_start.m_min,fltlisti.m_arrive.m_hour,fltlisti.m_arrive.m_min,fltlisti.m_fly.m_hour,fltlisti.m_fly.m_min);printf(乘客限额:%d,fltlisti.m_people);elseprintf(无此飞机);getch();printf(是否继续查询?);ClearBuf

24、fer();c=getchar();voidfltdat(FLIGHTfltlist,PNODEpsglist)intpeople40,i;DATEdate;PNODEp;for(i=0;inext;p!=NULL;p=p-next)if(datecmp(&date,&p-m_psg.m_Date)for(i=0;im_psg.m_fltno)peoplei+;for(i=0;i0)printf(%d%s-%s-%s人数:d,fltlisti.m_fltno,fltlisti.m_szFrom,fltlisti.m_szPass,fltlisti.m_szTo,peoplei);getch();voidAdd(FLIGHTfltlist)charc=y;while(c=y|c=Y)FLIGHTflt;BOOLb;printf(请

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论