- 约瑟夫环主要是要定义一个循环链表,自己写的,经过验证。
- 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();
- }