拓展一
约瑟夫问题(循环链表)
#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int data;
struct node *next;
}node;
node *create(int n)
{
node *head, *p=NULL;
head=(node *)malloc(sizeof(node));
p = head;
node *s;
int i=1;
if(0 != n)
{
while(i <= n)
{
s = (node *)malloc(sizeof(node));
s->data = i++;
p->next = s;
p = s;
}
s->next = head->next;
}
free(head);
return s->next;
}
int main()
{
int n; scanf("%d", &n);
int m; scanf("%d", &m);
int i;
node *p=create(n);
node *temp;
m %= n;
printf("\n");
while(p != p->next)
{
for(i = 1; i < m-1; i++)
{
p = p->next;
}
printf("%02d->", p->next->data);
temp = p->next;
p->next = temp->next;
free(temp