1. 程式人生 > >約瑟夫環的c語言實現(程式碼已實現)

約瑟夫環的c語言實現(程式碼已實現)

# 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");

    }

  }

}