1.单链表实现约瑟夫环
#include "joseph.h"
LoopLink list_create(int m)
{
LoopLink L = (LoopLink)malloc(sizeof(Node));
if(NULL==L)
{
printf("内存创建失败\n");
return 0;
}
LoopLink q=L;
for(int i=1; i<=m; i++)
{
LoopLink p = (LoopLink)malloc(sizeof(Node));
if(NULL==p)
{
printf("内存创建失败\n");
return 0;
}
p->data=i;
q->next=p;
q=p;
}
q->next = L->next;
return L;
}
void list_joseph(LoopLink L, int s,int n,int m)
{
LoopLink p = L->next;
for(int i=1; i<s; i++)
{
p=p->next;
}
for(int j=1; j<=m; j++)
{
for(int i=1; i<n-1; i++)
{
p=p->next;
}
printf("第%d位:%-3d\n",j, p->next->data);
LoopLink q=p->next;
p->next=q->next;
free(q);
p=p->next;
}
}