约瑟夫环问题 实验报告完整版.doc_第1页
约瑟夫环问题 实验报告完整版.doc_第2页
约瑟夫环问题 实验报告完整版.doc_第3页
约瑟夫环问题 实验报告完整版.doc_第4页
约瑟夫环问题 实验报告完整版.doc_第5页
全文预览已结束

下载本文档

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

文档简介

实验报告实验课名称:数据结构实验一实验名称:约瑟夫环问题班级 000学号 000姓名 神刀公子时间 1.问题描述约瑟夫环问题(1)问题描述设有编号为1,2,n的n(n0)个人围成一个圈,每个人持有一个密码m。从第一个人开始报数,报到m时停止报数,报m的人出圈,再从他的下一个人起重新报数,报到m时停止报数,报m的出圈,如此下去,直到所有人全部出圈为止。当任意给定n和m后,设计算法求n个人出圈的次序。(2)基本要求建立模型,确定存储结构。对任意n个人,密码为m,实现约瑟夫环问题。出圈的顺序可以依次输出,也可以用一个数组存储。(3)思考:采用顺序存储结构如何实现约瑟夫环问题?如果每个人持有的密码不同,应如何实现约瑟夫环问题?2.数据结构设计由于约瑟夫环问题本身具有循环性质,考虑采用循环链表,为了统一对表中任意结点的操作,循环链表不带头结点。将循环链表的结点定义为如下结构类型:struct Node int data; /数据域 Node *next; /next指针指向下一个结点;3.算法设计问题要求建立模型,确定存储结构,之后对任意n个人,密码为m,实现约瑟夫环问题,出圈的顺序可以依次输出,也可以用一个数组存储。设计流程图如图1.1所示。开始输出提示语输入所需参数创建链表,计算,得出结果输出结果结束图1.1 设计流程图(1)创建循环链表由于内容的要求以及问题的方便,用循环链表作为本次实验的抽象数据类型。申请一个结点作为第一个结点,之后调用creat_list函数将后续结点一次插入链接,构造为循环链表。NODE *link(int number) NODE *head=NULL,*p=NULL,*q=NULL; int i=1; head=(struct node*)malloc(sizeof(struct node); head-value=i; p=head; for(i=2; inext=q; p=q; p-value=i; p-next=head; return head;(2)约瑟夫环报数的算法在运行为循环方式,报数者除非本身已经出去,否则继续顺序报数,其报数循环的代码为void Joseph(NODE *p,int number,int n) int i,j; NODE *q=NULL; for(i=1; i=number; i+) for(j=1; jnext; q=p-next; p-next=q-next; p=p-next; printf(第%3d个出圈的人是:%3dn,i,q-value); free(q); scanf(n); p-next=NULL;(3)主程序执行主程序运行,调用函数,程序接受数据后,输出出圈列数。printf(请输入总人数n和密码m:n); scanf(%d,&number); scanf(%d,&n); NODE *head=NULL; head=link(number); Joseph(head,number,n); system(PAUSE);return 0;4界面设计程序无需复杂的界面设计,包含输入提示功能和输出提示功能。5.运行测试与分析(1)输出提示 ,如图1.2所示。(2)根据提示,输入圈内人数n和每个人持有的密码m 如图1.3所示。(3)输出结果如图1.4所示分析6.实验收获及思考 通过该实验,我进一步增强了对于链表的理解,也对链表的操作和实现更为熟悉,熟练掌握了如何实现置空表、求表的长度、取结点、定位运算、插入运算、删除运算、建立不带

温馨提示

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

评论

0/150

提交评论