




如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
《数据结构与算法设计》约瑟夫环实验报告—-实验一专业:物联网工程班级:物联网1班学号:姓名:刘沛航实验目得1、熟悉VC环境,学习使用C语言利用链表得存储结构解决实际得问题.2、在编程、上机调试得过程中,加深对线性链表这种数据结构得基本概念理解。3、锻炼较强得思维与动手能力与更加了解编程思想与编程技巧。二、实验内容1、采用单向环表实现约瑟夫环。请按以下要求编程实现:从键盘输入整数m,通过create函数生成一个具有m个结点得单向环表。环表中得结点编号依次为1,2,……,m。从键盘输入整数s(1〈=s〈=m)与n,从环表得第s个结点开始计数为1,当计数到第n个结点时,输出该第n结点对应得编号,将该结点从环表中消除,从输出结点得下一个结点开始重新计数到n,这样,不断进行计数,不断进行输出,直到输出了这个环表得全部结点为止.例如,m=10,s=3,n=4。则输出序列为:6,10,4,9,5,2,1,3,8,7.三、程序设计1、概要设计为了解决约瑟夫环得问题,我们可以建立单向环表来存储每个人得信息(该人得编号以及其下一个人得编号),及结点,人后通过查找每个结点,完成相应得操作来解决约瑟夫问题。抽象数据类型定义ADTJoh{数据对象:D=数据关系:R1=ﻩ基本操作:ﻩﻩcreate(&J,n)ﻩﻩ操作结果:构造一个有n个结点得单向环表J.ﻩshow(J)ﻩﻩﻩ初始条件:单向环表J已存在.操作结果:按顺序在屏幕上输出J得数据元素。ﻩcalculate(J,s,n)初始条件:单向环表J已存在,s>0,n〉0,s〈环表结点数。操作结果:返回约瑟夫环得计算结果。}ADTJoh(2)宏定义#defineNULL0#defineOK1#defineERROR-1(3)主程序流程开始输入数据(m,s,n)创建环表输出建立好得环表计算处理输出结果结束模块调用关系程序分为下述模块:1)主函数模块—-执行输入调用其她得功能函数2)创建环表模块-—创建单向环表3)计算处理模块—-计算出要出列得标号并输出4)显示模块——输出建立好得环表调用关系如下:主函数模块创建环表模块显示模块计算处理模块2、详细设计(1)数据类型设计typedefintElemType;//元素类型typedefstruct{ﻩElemTypedata;structJoh*next;}Joh,*LinkList,*p;//结点类型,指针类型(2)操作算法Statuscreate(LinkList&J,intn){ﻩ//创建一个有n个结点得单向环表if(n〈=0)ﻩﻩreturnERROR;ﻩ//n〈0错误J=(LinkList)malloc(sizeof(J));ﻩJ—>data=1;J->next=J;//建立第一个结点for(inti=n;i>1;-—i){ﻩﻩp=(LinkList)malloc(sizeof(J));ﻩp->data=i;ﻩﻩp—〉next=J—>next;J—>next=p;//插入到表头ﻩ}returnOK;}//createvoidshow(LinkListJ){//主要得操作函数//顺序输出环表J得结点p=J;printf(”%d”,p->data);ﻩp=p->next;while(p!=J){//循环终止条件ﻩﻩprintf("%d”,p—>data);ﻩﻩp=p->next;ﻩ}}//showvoidcalculate(LinkListJ,ints,intn){ﻩp=J;ﻩJoh*head=p;ﻩ//声明结点while(p-〉data!=s){ﻩﻩp=p->next;ﻩhead=p;}//寻找起始结点while(p->next!=p){//终止条件for(inti=0;i〈n—1;i++){ﻩﻩhead=p;//保存前置节点p=p-〉next;ﻩ}ﻩprintf(”%d",p->data);ﻩhead->next=p->next;//删除已输出结点p=head-〉next;ﻩ}ﻩif(n!=1)ﻩprintf("%d\n",p—〉data);elseﻩﻩprintf(”\n”);}//calculate(3)主函数代码intmain(){//主函数ﻩJoh*J;intm,s,n;printf("Thenumofnodeis:”);scanf(”%d",&m);create(J,m);//创建单向环表Jﻩshow(J);//输出J得数据ﻩprintf("\n");printf(”Thefirstnodewhichyouwantis:");ﻩscanf(”%d",&s);printf("Theinternalwhichyouwantis:");ﻩscanf("%d",&n);calculate(J,s,n);//计算并输出结果return0;}//main四

和蔼****娘子
实名认证
内容提供者


最近下载