📄 josephus2.cpp
字号:
#include "Onering.h" //单向循环链表类
void display(Onering &ring,int s,int d) //解约瑟夫环
{
int j=0;
OnelinkNode *p=ring.head;
while(j<s-1) //计数起始点
{
j++;
p=p->next;
}
while(p->next!=p) //多于一个结点时循环
{
j=1;
while(j<d-1) //计数
{
j++;
p=p->next;
}
ring.remove(p); //删除p的后继结点
p=p->next;
ring.output();
}
cout<<"The final person is "<<p->data<<"\n"; //最后一个人
}
void main(void)
{
int n=5,s=1,d=2;
Onering ring1(n); //建立有n个结点的单向循环链表
ring1.output();
display(ring1,s,d);
}
/*
程序运行结果如下:
Onering: 1 -> 2 -> 3 -> 4 -> 5 ->
remove: 2 Onering: 1 -> 3 -> 4 -> 5 ->
remove: 4 Onering: 1 -> 3 -> 5 ->
remove: 1 Onering: 3 -> 5 ->
remove: 5 Onering: 3 ->
The final person is 3
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -