有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的小孩都出列(总人数不足S个时将循环报数),求小孩出列的顺序。 输入 第一行输入小孩的人数N(N<=64) 接下来每行输入一个小孩的名字(人名不超过15个字符) 最后一行输入asdasdasdasdW,S (W < N),用逗号”,”间隔 输出 按人名输出小孩按顺序出列的顺序,每行输出一个人名 样例输入 5 Xiaoming Xiaohua Xiaowang Zhangsan Lisi 2,3 样例输出 Zhangsan Xiaohua Xiaoming Xiaowang Lisi
时间: 2023-06-18 16:06:10 浏览: 81
这是一个经典的约瑟夫问题,可以使用循环链表来模拟。具体做法如下:
1. 首先创建一个循环链表,链表的每个节点存储一个小孩的编号和名字。
2. 找到从第W个小孩开始报数的节点,让该节点成为链表的头结点。
3. 从头结点开始,依次报数,每报到第S个节点将该节点从链表中删除,并输出该节点对应的小孩名字。
4. 继续从被删除节点的下一个节点开始报数,循环执行步骤3,直到链表为空。
以下是完整的代码实现: