#include<iostream>
using namespace std;
struct Node//循ç¯èç¹çå®ä¹
{
int number;//ç¼å·
Node *next;
};
Node *CreateList(Node *L,int &n,int &m);//建ç«çº¦ç夫ç¯å½æ°
void Joseph(Node *L,int n,int m);//è¾åºæ¯æ¬¡åºåå·æ°å½æ°
Node *DeleteList(Node **L,int i,Node *q);//寻æ¾æ¯æ¬¡åºå人çå·æ°
int LengthList(Node *L);//计ç®ç¯ä¸ææ人æ°å½æ°
void main()//主å½æ°
{
Node *L;
L=NULL;//åå§åå°¾æé
int n, m;
cout<<"请è¾å
¥äººæ°Nï¼";
cin>>n;//ç¯çé¿åº¦
if(n<1){cout<<"请è¾å
¥æ£æ´æ°!";}//人æ°å¼å¸¸å¤ç
else
{
cout<<"请è¾å
¥ææ¥æ°Mï¼";
cin>>m;
if(m<1){cout<<"请è¾å
¥æ£æ´æ°!";}//å·æ°å¼å¸¸å¤ç
else
{
L=CreateList(L,n,m);//éæ°ç»å°¾æéèµå¼
Joseph(L,n,m);
}
}
system("pause");
}
Node *CreateList(Node *L,int &n,int &m)//建ç«ä¸ä¸ªçº¦ç夫ç¯ï¼å°¾ææ³ï¼
{
Node *q;
for(int i=1;i<=n;i++)
{
Node *p;
p=new Node;
p->number=i;
p->next=NULL;
if(i==1) L=q=p;//å·¥ä½æéçåå§å
else
{
q->next=p;
q=q->next;
}
}
q->next=L;
if(L!=NULL){return(L);}//è¿åå°¾æé
else cout<<"å°¾æéå¼å¸¸!"<<endl;//å°¾æéå¼å¸¸å¤ç
}
void Joseph(Node *L,int n,int m)//è¾åºæ¯æ¬¡åºåç人
{
int k;
cout<<"请è¾å
¥ç¬¬ä¸ä¸ªæ¥æ°äººï¼";
cin>>k;
if(k<1||k>n){cout<<"请è¾å
¥1-"<<n<<"ä¹é´çæ°"<<endl;}
else
{
cout<<"\nåºå顺åº:\n";
for(int i=1;i<n;i++)
{
Node *q = new Node;
if(i==1) q=DeleteList(&L,k+m-1,q);//第ä¸ä¸ªåºå人çå·æ°
else q=DeleteList(&L,m,q);
cout<<"å·æ°ï¼"<<q->number<<endl;
delete q;//éæ¾åºå人çåå¨ç©ºé´
}
cout<<"æåä¸ä¸ªåºåå·æ°æ¯ï¼"<<L->number<<endl;;//è¾åºæååºå人çå·æ°
}
}
Node *DeleteList(Node **L,int i,Node *q) //寻æ¾æ¯æ¬¡åºåç人
{
if(i==1) i+=LengthList(*L);//顺åºä¾æ¬¡åºåæ
åµçå¤çæ¹å¼
Node *p;
p=*L;
int j=0;
while(j<i-2) {p=p->next;j++;}
q = p->next;
p->next=p->next->next;
*L = p->next;
return(q);
}
int LengthList(Node *L)//计ç®ç¯ä¸ç人æ°
{
if(L){cout<<"å°¾æéé误!"<<endl;}//å¼å¸¸å¤ç
else
{
int i=1;
Node *p=L->next;
while(p!=L)
{
i++;
p=p->next;
}
return(i);
}
}
追é®ä½ 好ï¼äº²ãææ³è¦Cè¯è¨ççãèä¸è¦æ°ç»å½¢å¼çã谢谢äºå...