
对于约瑟夫环问题,采用线性链表结构,其中m=20,n=7,7个人的密码分别是3、1、7、2、4、8、4。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
题目:每个人都持有唯一的密码。程序首先接收一个正整数m,作为报数上限,然后从某个人开始进行循环报数,直至达到该上限的人出列。随后,以该出列者手中的密码作为新的报数上限,继续依次进行报数。最终,程序将出列人的序号按照先后顺序打印出来。一. 需求分析1. 在本演示程序中,参与报数的总人数n可以任意设定。程序应当首先接受一个值并将其赋值给初始报数上限m,之后能够自动记录出列人的序号,并将出列者所持的密码赋给m,然后以这个更新后的m值作为新的报数上限进行循环报数,持续进行直至所有人都出列为止。2. 演示程序采用用户与计算机交互的方式运行,即在计算机终端上显示“提示信息”后,用户通过键盘输入每个人的密码信息。程序会自动分配给每个人一个序号。3. 程序执行的主要指令包括:(1)构建链表;(2)输入数据;(3)执行报数过程,同时储存出列人的序号、删除出列者的相关信息以及将出列者的密码赋值给m;(4)结束程序流程。4. 测试数据(1)当m=20, n=7时,7个人的密码依次为:3, 1, 7, 2, 4, 8, 4。初始情况下m值为6,则正确的出列顺序应为6, 1, 4, 7, 2, 3, 5。二. 概要设计为了实现上述操作逻辑,建议采用单向循环链表作为存储结构来实现数据管理和操作。1. 基本操作:code() 操作结果:构建一个空链表;若操作成功则初始化每个人的相关信息。code()初始条件:存在线性链表;操作结果:释放指向出列者的结点并重新设置报数上限。2. 本程序包含三个主要模块:(1)主程序模块;(2)负责构造链表并接收每个人信息模块;(3)负责释放结点模块的模块。
全部评论 (0)
还没有任何评论哟~


