C++编程 从1到m个数,每n个输出一次????
来源:百度知道 编辑:UC知道 时间:2024/05/27 20:10:48
1到M顺时针坐成一圈,从1开始报数,报到N时停止并出列,在从他下一个开始报数,报到N出列,重复以上操作
求出出列编号序列...
晕,我同学没说清楚...
希望大家原谅再答一次
#include<iostream>
using namespace std;
//链表结点类number为这个人的编号
struct person
{
unsigned int number;
person *next;
};
//约瑟夫环类,此类包含多个person类,并控制输入输出.
class joseph_ring
{
private:
unsigned int n;//用于存放人数
unsigned int m;
unsigned int k;
person *head;//链表的头结点
public:
joseph_ring(){n=0;head=NULL;}//构造函数,把成员变量赋初值
void create();//建立环的成员函数
void show();//运算并输出的成员函数
};
void joseph_ring::create()
{
cout<<"请输入人数n:";
cin>>n;
cout<<"请输入m的初值:";
cin>>m;
cout<<"请输入第一个开始报数的人的编号k:";
cin>>k;
//定义2个临时指针
person *p1,*p2;
//for循环中用于初始化环
for(int i=1;i<=n;i++)
{
p1=new person;//新实例化一个"人"的对象
p1->number=i;//给这个"人"编个号
//如果当前链表为空,头结点指向第一个"人"
if(i==1)
{
head=p1;
p2=p1;