//循环队列 //约瑟夫环 #include<conio.h> #include<stdio.h> #include<iostream> #define Size 10 using namespace std; class Joseph{ private: int num[Size];//队列 int first;//第一个人 int top;//累加器上限 int front;//队首 int rear;//队尾 int cnt;//累加器 public: Joseph() { int i; front = 0; rear = 0; cnt = 0; for(i=0;i<Size;i++){ if((rear+1)%Size-front){ in(i); }//if }//for }//Joseph() void out() { front=(front+1)%Size; }//out() void in(int val) { rear=(rear+1)%Size; num[rear]=val; }//in() void JosephRoll() { cout<<"Please input the first number:"; scanf("%d",&first); cout<<"Please input the next number:"; scanf("%d",&top); while(num[(front+1)%Size]-first){ out(); in(num[front]); cout<<num[front]<<endl; }//while while(rear-front){ cnt=0; while(cnt-top){ out(); in(num[front]); cnt++; }//while(cnt-top-2) out(); cout<<"num:"<<num[front]<<endl; }//while(rear-front) } }; int main(void) { Joseph Roll1; Roll1.JosephRoll(); return 0; }