#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
#define ERROR 0
#define OK 1
typedef int Position;
typedef int ElemType;
typedef int Status;
typedef struct
{
ElemType* elem;
Position length;
}List;
Status InitList(List &L);
Status OutList(List &L,int n,int m);
int main()
{
int m,n,t,i;
List L;
InitList(L);
printf("请输入总人数n:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
t=i;
L.elem[i]=t+1;
L.length++;
}
printf("请输入m:\n");
scanf("%d",&m);
OutList(L,n,m);
return 0;
}
Status InitList(List &L)
{
L.elem=(ElemType*)malloc(MAXSIZE*(sizeof(ElemType)));
if(!L.elem)
{
printf("分配内存失败!");
return ERROR;
}
else
{
L.length=0;
return OK;
}
}
Status OutList(List &L, int n,int m)
{
int i,j=0,flag=0;
int l=L.length;
while(L.length>1)
{
if(L.elem[i]!=0)
{
flag++;
if(flag==m)
{
printf("第%d个出列的人是%d号\n",j++,L.elem[i]);
L.elem[i]=0;
flag=0;
L.length--;
}
}
i++;
i=i%n;
}
for(i=0;i<l;i++)
{
if(L.elem[i]!=0)
{
printf("最后剩下来的是:%d号",L.elem[i]);
}
}
}