数据结构与算法实验题 2.3 大家一起来报数Ⅱ
★实验任务
编号为 1 - n 的 n 个人按顺时针方向围坐一圈,从第一个人开始按顺时针方向自 1 开
始报数,报到 m 时停止,在报到 m 的那个人的左右的两个人出列,从他在顺时针方向下
一
个人开始重新从 1 报数,如此下去。如果还在游戏的人数少于 3 个,则游戏终止。在一行
内输出最后留下来的人编号
★数据输入
输入第一行为 T ,代表接下去有 T 组测试, 0 < T < =10
接下去 T 行,每行两个数代表 n 和 m,0 < n,m < =1000
★数据输出
对于每个输入,在一行内输出最后留下来的人编号,如果有两个人留下来,则用空格隔
开,并按从小到大排序。
输入示例 输出示例
3
1 2
3 1
4 2
1
1
2 4
#include<stdio.h>
#include<malloc.h>
typedef struct LinkedList* List;
struct LinkedList
{
List right;
List left;
int n;
};
List creatList(int peopleNum)
{
List mainList;
List leftList;
List headList;
headList=mainList=leftList=NULL;
for(int i=1;i<=peopleNum;i++)
{
leftList=(List)malloc(sizeof(LinkedList));
leftList->n=i;
if(mainList==NULL){
mainList=headList=leftList;
}
else {
评论0
最新资源