【问题描述】
n 个人(编号从1~n)围成一圈,从第 k 个人开始数数,数到 m 的人出圈,然后继续从未出列的下一个人开始数数,数到 m 的人出圈,重复上述过程,直到圈中仅剩下一人。
【输入形式】
输入为一行三个正整数,n、k、m。
【输出形式】
输出为一个正整数,表示最后剩下的人的编号。
【样例输入】
100 1 5
【样例输出】
47
【答题提醒】本题为程序片段题,你需要将程序补充完整。题目为类与对象的应用,构造一个循环链表,你需要完全理解本程序的设计思想。
实现思路和注释仅供自己理解,不一定正确
#include <iostream>
using namespace std;
class person//看做person节点
{
private:
int no; //人的编号
person *next; //指向相邻的下一个人
public:
person(int num)
{
no=num;
next=NULL;//初始化next指针为空指针
}
void setNext(person *p)//方便next指针存放person类指针
{
next=p;
}
int getNo()
{
return no;
}
person *getNext()
{
return next;
}
}

循环链表解决&spm=1001.2101.3001.5002&articleId=111461341&d=1&t=3&u=0fc0d8b598154633af46c69a350c629f)
2万+

被折叠的 条评论
为什么被折叠?



