#include "stdlib.h"
#include "stdio.h"
#define NULL 0
typedef struct LNode
{
int No;
int code;
struct LNode *next;
}LNode,*LinkList;
int n,m;
//建立循环链表
LinkList create()
{int i;
LinkList front,rear,k;
front=NULL;
for(i=1;i<=n;i++)
{ k=(LinkList)malloc(sizeof(LNode));
k->No=i;
printf("code:");
scanf("%d",&k->code);
if(front==NULL)
{
front=k;
rear=front;}
else
{rear->next=k;
rear=k;
}
}
rear->next=front;
return rear;
}
//实现约瑟夫环
void outcircle(LinkList &L)
{
int i,j,scode[20];
LinkList p,q;
p=L;
for(i=0;i<n;i++)
{
for(j=1;j<m;j++)
{p=p->next;
}
q=p->next;
m=q->code;
scode[i]=q->No;
p->next=p->next->next;
free(q);
}
printf("The code is:");
for(i=0;i<n;i++)
printf("%2d",scode[i]);
printf("/n");
}
//主函数
int main()
{
printf("input n:/n");
scanf("%d",&n);
printf("input m:/n");
scanf("%d",&m);
LinkList rear;
rear=create();
outcircle(rear);
getchar();
return 0;