记得一年前,还不知道,或者说 无法理解:什么是约瑟夫环。 甚至给个代码,也无法看懂,无法理解。
现在终于 实现了 顺序表的基本算法来实现了:约瑟夫环的问题了。 在此分享一下,呵呵。
#include<stdio.h>
#include<stdlib.h>
#define Maxsize 30
struct SqList
{
int Data[Maxsize];
int length;
};
typedef struct SqList SqList;
void InitList(SqList *&L)
{
L = (SqList *)malloc(sizeof(SqList));
L->length = 0;
}
void CreateList(SqList *&L)
{
int i;
int people;
printf("请输入参加报数的人数:\n");
scanf("%d",&people);
for (i=0; i<people; i++)
{
L->Data[i] = i + 1;
printf("%d ", L->Data[i]);
}
printf("\n");
L->length = people;
}
void DisplayList(SqList *L)
{
int m, i, j;
int k=0;
printf("请输入报数出队的次数: \n");
scanf("%d", &m);
for (i=L->length; i>0; i--)
{
k=(k+m-1)%i;
printf("%d ",L->Data[k]);
for (j=k;j<i-1; j++)
{
L->Data[j] = L->Data[j+1];
}
L->length = L->length - 1;
}
printf("\n");
}
void main()
{
SqList *L;
InitList(L);
CreateList(L);
DisplayList(L);
}
更详细在下面
http://blog.163.com/wenxianliang08@126/blog/static/83583263201123082555788/