约瑟夫环主要是要定义一个循环链表,自己写的,经过验证。
typedef struct node
{
int num;
struct node *next;
}Node; //定义一个链表结构体
int main()
{
int t =0;
int n=20,m=3;
Node *head=NULL;
Node *wei = NULL;
//malloc后需要free掉,否则当程序
//长时间运行时循环malloc的情况下会崩溃,
//内存泄露,程序关闭时
//操作系统会自动释放掉开辟内存,这里测试就不释放
head = (Node *)malloc(sizeof(Node));
head->num=1;
head->next = NULL;
wei = head;
for(int i=2;i<=n;i++)
{
Node *temp = (Node *)malloc(sizeof(Node));
temp->num = i;
temp->next = NULL;
wei->next = temp;
wei = temp;
}
wei->next= head; //定义一个循环链表
//输出合适的值
Node *head1= wei;
while(t<20)
{
int x= 0;
while(x!=m)
{
head1=head1->next;
x++;
}
printf(" %d",(head1)->num);
t++;
}
getchar();
}