小妹我学的不好,还请大家帮帮改改~谢了
程序是没有错误了 但是测试数据不对
m=20 n=7 7个人密码分别为3 1 7 2 4 8 4时
出列顺序应该是6 1 4 7 2 3 5
可我得不出这个答案
#include<iostream.h>
struct LNode{
int data,code;
LNode *next;
};
int m,n;
void Create(LNode *head) //初始化单向循环链表
{
LNode *p;
int i;
cout<<"输入各人密码:"<<endl;
head->data=1;
cin>>head->code ;
p=head;
for(i=2;i<=n;i++) {
LNode *s=new LNode;
s->data=i;
cin>>s->code;
p->next=s;
p=s ;
}
p->next=head;
}
int Put(LNode *q) //处理出列顺序
{
int i;
LNode *p;
p=q;
while(n!=1) {
for(i=1;i<m;i++){
p=p->next;
}
q=p->next;
p->next=q->next;
m=q->code;
cout<<q->data<<endl;
delete q;
n--;
i=1;
}
return p->data;
}
void main()
{
LNode *head,*q;
head=new LNode;
q=head;
cout<<"输入初始报数上限值m: "<<endl;
cin>>m;
cout<<"输入人数n: "<<endl;
cin>>n;
Create(head);
cout<<"出列顺序为: "<<endl;
Put(q);
}