用单循环链表做的。
代码.
/* 这是约瑟夫环*/#includeusing namespace std;typedef struct node{ int data; struct node* next;}Link;void josephus(int n,int m){ //用循环链表做 Link *head,*tail; int i,j; head=NULL; tail=NULL; for(i=0;i data=i; temp->next=NULL; if(head==NULL) { head=temp; tail=temp; } else { tail->next=temp; tail=temp; } } tail->next=head; //循环链表建成 //first指针指向每次开始的节点,最后一次时它应该指向自己 Link* pre=tail; Link* first=head; while(first->next!=first) { for(j=1;j next; } //first指向的出列 //cout< data<<"出"< next=first->next; first=first->next; delete temp; temp=NULL; } cout< data<<"出"< >n>>m; josephus(n,m); return 0;}