1 / 46
文档名称:

数据结构实验报告.doc

格式:doc   大小:154KB   页数:46页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构实验报告.doc

上传人:文库旗舰店 2019/10/3 文件大小:154 KB

下载得到文件列表

数据结构实验报告.doc

文档介绍

文档介绍:实验报告课程名称     算法与数据结构     ||专业班级:信安1501    学生姓名:朱智光学  号:201509040132  成  绩:指导教师:牛为华     实验日期:、实验要求约瑟夫的问题是:编号为1、2、...、n的n个人按顺时针方向围坐一圈,每人有一个正整数编号。从某个位置上的人开始报数,数到m的人便出列;下一个人第(m+1个)又从1数起,数到m的人便是第2个出列的人;依次重复下去,直到最后一个人出列,于是得到一个新的次序,试设计程序求出出列顺序。测试数据:m=4,n=8;要求:(1)利用单循环链表存储结构模拟此过程。(2)利用顺序结构模拟此过程。2、运行环境VC++、设计思想单循环链表存储结构:创建一个单循环链表,从头指针开始按照m个的周期对链表进行遍历,每到m个的时候输出改结点的数据域,然后删除该结点,一次循环下去便可得到出列顺序;顺序结构存储:创建一个数组来存储这些元素,然后从第一个开始按照m的周期一次判断,每到m个的时候先输出改元素的值,然后将该数组元素置为零,依次进行下去可得出列顺序;4、源程序单循环链表:#include<>typedefstructNode//定义结构体边结点{intdata;structNode*next;}*Pointer;voidCreateList(intn,intm){PointerHead,p;Head=p=newNode;for(inti=1;i<n;i++)//创建单循环链表{p->next=i;p->next=newNode;p=p->next;}p->data=n;p->next=Head;while(p!=Head)//关键部分,通过判断输出出列顺序{for(intj=1;j<m;j++){p=Head;Head=Head->next;}j=j-3;p->next=Head->next;cout<<Head->data<<"";deleteHead;Head=p->next;}cout<<p->data;}voidmain()//主函数{PointerHead,p;Head=p=newNode;cout<<"输出次序:";CreateList(8,4);}顺序结构:#include<>#definen8#definem4voidget(){inta[n],j=0,k=0;for(inti=0;i<n;i++)//创建数组{a[i]=i+1;}for(i=0;i<n;i++)//关键部分,通过判断输出出列顺序{if(a[i]!=0){j++;if(j==m){cout<<a[i]<<"";j=0;k++;a[i]=0;if(k==n)break;}}if(i==n-1){i=-1;}}}voidmain()//主函数{cout<<"输出次序:";get();}5、实验结果输出次序:485213766、实验总结通过这次实验我学会了如何用程序来解决约瑟夫的问题,对单循环链表以及顺序存储结构有了进一步的认识;实验二停车场管理一、实验目的及要求问题描述:设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场按车辆到达时的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若停车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦停车场内有车开走,则便道上的第一辆车即可开入。当停车场内某辆汽车要离开时,由于停车场是狭长通道,在它之后开入车场必须先退出车场为它让路,待该车辆开出大门外后,为它让路的车辆再按原次序进入车场。在这里假设汽车不能从便道上开走。每辆车停放在车场的车在它离开停车场时必须按它停留的时间长短缴纳费用。试为停车场编制按上述要求进行管理的模拟程序。要求:根据各结点的信息,调用相应的函数或者语句,将结点入栈或入队,出栈或出队。2、运行环境VC++、设计思想首先本程序包含一个临时栈s2,一个停车场栈s1,及一个队列便道q,栈采用顺序存储结构,队列采用链式存储结构。车辆进栈就是将元素插进s1,栈满了的话元素就会插进队列中,如果有栈底的元素要离开的话,这就需要用到临时栈了,将该元素上面的元素依放入临时栈中,等要离开的元素离开后在放回来;然后s1未满且q中仍有元素时,q中最前面的元素就插进s1中,这样就基本实现了实验目的;4、源程序#include<>constintN=3;typedefstruct  //将结构体类型化方便添加其他相关信息,比如车辆到达时间(只需增加intarrivetime){intnum;}elemtype;structseqstack //栈类型,s1为停车场,s