数据结构实验报告ﻬ题目:约瑟夫环问题一.设计内容[问题描述] 约瑟夫环问题得一种描述就是:编号为 1,2,3,…,n 得 n 个人按顺时针方向围坐一圈,每人手持一个密码(正整数)
一开始任选一个整数作为报数上限值,从第一人开始顺时针自 1 开始顺序报数,报到 m 时停止报数
报 m 得人出列,将它得密码作为新得 m 值,从她在顺时针方向上得下一个人开始重新从 1 报数,如此下去直到所有人全部出列为止
试设计程序实现之
[基本要求] 利用循环链表存储结构模拟此过程,根据出列得顺序打印各人得编号
[实验提示]程序运行后首先要求用户指定初始报数上限值
然后读取各人得密码
设n<=3 0
程序执行后,要求用户在计算机终端上显示“提示信息"后,用键盘输入“提示信息"中规定得命令,以“回车符"为结束标志
相应得输入数据与运算结果显示在其后
二、设计目得1、 达到熟练掌握 C++语言得基本知识与技能;2、 能够利用所学得基本知识与技能,解决简单得面对对象程序设计问题
3、把课本上得知识应用到实际生活中,达到学以致用得目得
三、系统分析与设计(确定程序功能模块)1、为实现上述程序得功能,应以有序链表表示集合
基本操作:I ni t L i s t(&L) 操作结果:构造一个空得有序表 L
DestroyList(&L) 初始条件:有序表L已存在
操作结果:销毁有序表 L
Lis t E mp t y(L)初始条件:有序表 L 已存在
操作结果:若 L 为空表,则返回 TRUE,否则返回 FA LSE
Lis t L en gth(L)初始条件:有序表L已存在
操作结果:返回 L 中数据元素个数
GetE l e m(L,i)初始条件:有序表 L 已存在,并且 1≤i≤L i s t L e ngt h(L)
操作结果:返回 L 中第 i 个数据元素
L ocatePo s(L,e)初始条