#include <iostream>
#include <stdlib.h>
#include <stdio.h>
typedef struct LNode
{
int data;
struct LNode* link;
}LNode, *LinkList;
void JOSEPHUS(int n, int k, int m)
//n是总人数,k是第一个开始报数的人,m是出列者喊到的数
{
LinkList p, r, curr;
p=(LinkList)malloc(sizeof(LNode));
p->data = 1;
p->link = p;
curr = p;
for(int i = 2; i <= n; i++)
{
LinkList t=(LinkList)malloc(sizeof(LNode));
t->data = i;
t->link = curr->link;
curr->link = t;
curr = t;
}
r = curr;
while (--k)
{
r=p;
p=p->link;
}
while(n--)
{
for(int s=m-1; s--; r=p,p=p->link);
r->link=p->link;
printf("%d ",p->data);
free(p);
p=r->link;
}
}
int main()
{
JOSEPHUS(5,2,4);
return 0;
}
约瑟夫环
最新推荐文章于 2024-11-14 15:54:34 发布