- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【精选】数据结构实习报告模版
数据结构
上机实习报告
实验题目: 约瑟夫环问题求解
班级:
姓名:
学号:
指导老师:
完成日期:
一、 需求分析
1、问题描述
已知n 个人(编号分别为 1,2 ,...,n )按顺时针方向围坐一圈,每人持有一个正整数
密码。 开始时任选一个报数上限值 m ,从编号为 1 的人按顺时针方向自 1 开始报数,报到
m 时停止报数,报 m 的那个人出列;将他的密码作为新的m 值,从他在顺时针方向的下一
个人开始重新从 1 报数,数到 m 的那个人又出列;依此规律重复下去,直到所有人全部出
列。输入 n ,m 两个正整数以及 n 个正整数为密码,设计程序来求 出列的编号序列。
2、功能需求
用户准备好输入文件,其中包含程序中需要的输入数据。程序在计算机终端上显示运算结果。
程序执行的命令包括:
1)构造约瑟夫环;
2 )分析并判断输入数据的合法性
3 )约瑟夫环报数和出列的模拟与出列编号序列的输出;
4 )结束。
3 、输入及输出格式
1、 输入数据
数据从文件输入,输入文件的格式如下:
文件“JRInput.txt”第一行的正整数代表人数 n , 第二行的正整数代表密码的初始值 m ,
从第三行开始有 n 对正整数分别代表 n 个人的编码和密码。
2 、 输出数据
(结果输出到屏幕,输出结果通常只有一行,含n 个整数,表示 n 个人的出列顺序。
3、 输入输出样例
输入文件 JRInput.txt 内容如下:
7
20
1 3
2 1
3 7
4 2
5 4
6 8
7 4
屏幕输出:
出列序号是:6 1 4 7 2 3 5
二、 概要设计
1、数据特性分析
a )n 代表总人数,m 是初始密码
b )数据元素:a =(n ,m ) ,其中 i=1,2,…,n (n≥1),n 、m 代表第 i 个人的编号和持有的密码 ,
i i i i i
其中 ni 不能省略
c ) 数据元素间的关系:对 a (1≤i≤n-1)存在后继次序关系a , a ;a 的直接后继是a
i i i+1 n 1
2、操作特性分析
a ) 建空约瑟夫环
b )通过循环在约瑟夫环的尾部插入新的数据元素,从而建立约瑟夫环
c )在约瑟夫环中从某结点开始遍历若干步
d )删除约瑟夫环中某结点的下一个结点
3 、问题的抽象数据类型分析
约瑟夫环的数据元素是由编号和密码值组成的二元组。约瑟夫环的逻辑结构是线性表。
求解约瑟夫环问题可以分为两个步骤:
1. 构造约瑟夫环;
2. 约瑟夫环循环报数、出列。
在第一个步骤,由于构造约瑟夫环是通过在表尾循环插入元素结点,因此约瑟夫环的逻
辑操作有:
1. 初始化约瑟夫环;
2. 在约瑟夫环表尾插入;
3. 循环报数出列。
通过以上分析,确定约瑟夫环抽象数据类型定义如下:
ADT JesephRing
数据元素: a =(n ,m ) ,i=1,2,…,n (n≥1),n ,m 代表第 i 个人的编号和持有的密码 ,其
i i i i i
中ni 不能省略。
结构:线性结构,对数据元素 a (1≤i≤n-1)存在次序关系a ,a , a 的直继是a 。
i i i+1 n 1
逻辑操作:设 J 为 JesephRing 型
JesephRingInitiate(J); //构造一个空的约瑟夫环 J 。
JesephRingInsertEnd(J, x); //在约瑟夫环 J 尾部插入新元素 x ,成功返回 1,失败返回 0 。
JesephRing(J,m); /*给定初始报数上限 m ,从 1
文档评论(0)