約瑟夫環的c語言實現(程式碼已實現)
阿新 • • 發佈:2018-11-11
# include <stdio.h>
#define MAXLEN 20
int front=MAXLEN-1;//佇列初始化
int rear=MAXLEN-1;
enqueue(int q[],int x) //入隊
{
rear=(rear+1)%MAXLEN;
q[rear]=x;
}
int dequeue(int q[]) //出隊
{
front=(front+1)%MAXLEN;
return q[front];
}
Void main()
{
int i,j,y,n,m; //j是,y是,n是參與的人數,m是出列時所報的數
int q[20];
printf("請依次輸入參與的人數和出列時報的數:");
scanf("%d%d",&n,&m);
printf("人數=%d,出列數字=%d\n",n,m);
for(i=1;i<=n;i++) //佇列的元素進隊
enqueue(q,i);
j=n; //j初始化,代表剩餘未出列的人數
printf("輸出出列順序如下所示:");
while(j!=0) //當報數i=m時刪掉此元素,元素出列,i用來計報的數,判斷是否出列
{
for(i=1;i<=m;i++) {
y=dequeue(q);
if(i!=m)
enqueue(q,y);
else
{
printf("%2d",y);
j--;
}
printf("\n");
}
}
}