用循环数组实现约瑟夫环

#include <stdio.h>


#define MAX_ALIVE 100


typedef struct JOSEPH{

   

  int mima;

  int next;


}JOSEPH;


void main(){

      JOSEPH joseph[MAX_ALIVE];

  int i,j,ss=0,num,alive;

  for (i = 0; i<MAX_ALIVE-1; i++){

       joseph[i].mima = 5 + i%11;

joseph[i].next = i + 1   ;

  

  }

       joseph[i].mima = 5 + i%11;

joseph[i].next = 0;

       i = 0;

  j = MAX_ALIVE -1;

  alive =MAX_ALIVE;

  num = joseph[0].mima;

     

  while(alive){

       ++ss;

if (ss == num ){

   printf("第%d个人出队,密码为%d \n",i+1,joseph[i].mima);

ss = 0;

joseph[j].next = joseph[i].next;

num = joseph[i].mima;

    alive--;

}

j = i;

i = joseph[i].next;

  

  }


}


你可能感兴趣的:(用循环数组实现约瑟夫环)