哪位高手指点一下
用静态链表来求解约瑟夫问题,谢谢啊!
[解决办法]
- C/C++ code
void DelChain(int n,int m){ struct item { int data; item *next; }; item *head,*tail,*temp; head=tail=NULL; int count=0; for(int i=0;i<n;i++)//初始化链表 { item *temp=new item; temp->data=i+1; temp->next=NULL; if(head==NULL) head=tail=temp; else { tail->next=temp; tail=temp; } } tail->next=head; temp=head; while(count<n)//删除元素 { int x; count++; if(m==1) //已指向第m个元素 { x=head->data; head=head->next; } else { for(int k=1;k<m-1;k++) temp=temp->next; head=temp->next; temp->next=head->next; //从链表中删除该元素 temp=temp->next;//记录下次开始计数的初始位置 x=head->data; delete head; } if(count<n) cout<<x<<" "; else cout<<x; } cout<<endl;}