@RK
#include <iostream>
using namespace std;
class Node
{
public:
int data;
Node *next;
};
class CircleList
{
public:
Node* head;
int length;
CircleList()
{
head = new Node();
head->next = head;
head->data = 0;
length = 0;
}
void CreateCircleList(int n); //创建单向循环链表
};
void CircleList::CreateCircleList(int n)
{
if(n<0)
{
cout << "ERROR " << endl;
}
else
{
length = n;
int i = 0;
Node *p,*q;
p = head;
p ->data = 1;
i = i + 1;
int a = 2;
while(i<n)
{
q = new Node();
q->data= a;
p->next = q;
q->next = head;
p = q;
i++;
a++;
}
}
}
int main() //主函数
{
CircleList list;
int i;
int m,n;
cout<<"输入间隔数和总人数";
cout<<endl;
cin>>m; //间隔数
cin>>n; //总人数
list.CreateCircleList(n); //设置循环链表的长度
Node *p = list.head;
if(m > 2)
{
for(i = 0; i < m-2; i++)
{
p = p->next;
}
cout<<p->next->data<<" ";
p->next = p->next->next;
n--;
while(p->next != p)
{
for(i = 0; i < m-1; i++)
{
p = p->next;
}
cout<<p->next->data<<" ";
p->next = p->next->next;
}
cout<<p->data;
cout<<endl;
}
else if(m == 1)
{
for(i = 0; i < n; i++)
{
cout<<p->data;
p = p->next;
}
}
else
{
while(n>0)
{
cout<<p->next->data<<" ";
p->next = p->next->next;
p = p->next;
n--;
}
}
return 0;
}