- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构实验报告
题目:约瑟夫环问题
一.设计内容
[问题描述]
约瑟夫环问题的一种描述是:编号为1,2,3,…,n的n个人按顺时针方向围坐一圈,每人手持一个密码(正整数)。一开始任选一个整数作为报数上限值,从第一人开始顺时针自1开始顺序报数,报到m时停止报数。报m的人出列,将它的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去直到所有人全部出列为止。试设计程序实现之。
[基本要求]
利用循环链表存储结构模拟此过程,按照出列的顺序打印各人的编号。
[实验提示]
程序运行后首先要求用户指定初始报数上限值。然后读取各人的密码。设n=30。
程序执行后,要求用户在计算机终端上显示“提示信息”后,用键盘输入“提示信息”中规定的命令,以“回车符”为结束标志。相应的输入数据和运算结果显示在其后。
二、设计目的
1. 达到熟练掌握C++语言的基本知识和技能;
2. 能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
3.把课本上的知识应用到实际生活中,达到学以致用的目的。
三、系统分析与设计(确定程序功能模块)
1、为实现上述程序的功能,应以有序链表表示集合。
基本操作:
InitList(L)
操作结果:构造一个空的有序表L。
DestroyList(L)
初始条件:有序表L已存在。
操作结果:销毁有序表L。
ListEmpty(L)
初始条件:有序表L已存在。
操作结果:若L为空表,则返回TRUE,否则返回FALSE。
ListLength(L)
初始条件:有序表L已存在。
操作结果:返回L中数据元素个数。
GetElem(L,i)
初始条件:有序表L已存在,并且1≤i≤ListLength(L)。
操作结果:返回L中第i个数据元素。
LocatePos(L,e)
初始条件:有序表L已存在,e和有序表中元素同类型的值。
操作结果:若L中存在和e相同的元素,则返回位置;否则返回0。
InsertElem(L,e)
初始条件:有序表L已存在
操作结果:在L中,按有序关系插入值和e相同的数据元素。
DeleteElem(L,i)
初始条件:有序表L已存在。
操作结果:删除L中第i个数据元素。
ListTraverse(L,visit())
初始条件:有序表L已存在。
操作结果:依次对L的每个数据元素调用函数visit()。一旦visit()失败,则操作失败。
} ADT OrderedList
2、本程序包含两个模块:
(1)主程序模块:
void main(){
初始化;
调用函数(接受命令,处理命令)}
(2)有序表单元模块——实现有序表的抽象数据类型。
(3)输出函数模块——有序表的输出。
四、源程序代码
#includestdio.h
#includemalloc.h
//1.元素类型,结点类型和指针类型
typedef struct LNode //定义结构体,
{
int num,pwd; //num用来存储人的序号,pwd用来存储人的密码
struct LNode *next;
};
struct LNode *head,*p,*pt; //定义结点
//2、 创建循环链表函数
int creatLinkList(int n) //参数n传递人数,
{
int i;
head=(struct LNode*)malloc(sizeof(struct LNode));
//创建一个带头结点的链表
if(!head) {return 0;} //创建不成功,返回0
p=head;
for(i=1;in;i++)
{
pt=(struct LNode*)malloc(sizeof(struct LNode));
if(!pt) {return 0;}
p-next=pt;
p=pt;
}
p-next=head; //构成循环链表
pt=head;
return 0;
}
//3.创建输入密码函数
int enterPwd(int n) //参数n传递人数
{
int i,j;
printf(\n请输入密码: \n);
for( i=1;i=n;i++)
{
scanf(%d,j);
pt-num=i; //num存储人的序号
您可能关注的文档
- 《office高效办公答案》.doc
- 《opengl 3D迷宫 C 实现 源代码》.doc
- 《数据库课程设计(花店管理系统)》.doc
- 《数据库课程设计(图书管理系统)》.doc
- 《数据库课程设计--社团管理系统》.doc
- 《数据库设计报告——工资管理系统》.doc
- 《数据库课程设计-教务管理系统[1]》.doc
- 《数据结构 C语言版 第二版(严蔚敏) 第5章 树和二叉树 答案》.doc
- 《数据结构(含答案)》.doc
- 《数据结构,最小生成树克鲁斯卡尔算法的实现》.doc
- 2025年农业信息化建设与智慧农业大数据平台规划研究报告.docx
- 农产品深加工产业园区建设项目:产业园区招商引资策略.docx
- 基于人工智能的远程医疗服务模式发展趋势研究报告.docx
- 在线游戏行业未成年人保护与青少年价值观引导研究报告.docx
- 2025年高端装备制造产业园区产业园区运营管理优化建议.docx
- 2025年城市垃圾填埋场封场治理项目社会稳定风险评估与可持续发展报告.docx
- 2025年长租公寓行业政策环境与盈利潜力研究报告.docx
- 2025年“健康中国”战略背景下公共卫生体系优化研究.docx
- 新能源产业2025年储能电池热管理技术发展趋势与市场前景报告.docx
- 2025年体检行业市场细分领域竞争格局与服务质量提升策略分析报告.docx
最近下载
- (人教版2019选择性必修第三册)高中物理综合测试卷(原卷版+解析).docx VIP
- 2024年四川省德阳市中考物理试题卷(含答案).docx
- 2024年中考语文专题复习:非连续性文本阅读(含练习题及答案).docx
- 第八章《浮力》单元测试(含解析)2024-2025学年鲁科版物理八年级下学期.pdf VIP
- 铁路轨道车制动系统-研究所.ppt
- 2025年事业单位招聘考试公共基础知识专题复习讲义及训练:法律知识.pdf
- 关于创建“温馨校园”活动的实施方案.pdf
- 产后修复腹直肌护理.pptx VIP
- 辽宁协作校2024-2025学年度高三第二次模拟考英语试题(含答案).docx
- 产后康复-腹直肌分离.pptx VIP
文档评论(0)