struct node
{
int data;
point next;
};
上面这个定义在编译时没问题,但在运行时,如果后面的程序中有用node 定义的变量,系统会提示没有定义node.
我的征途是星辰大海
程序有错:请各位高手帮帮忙!(有关约瑟夫环的)
#include<iostream.h>
struct node
{
int num;
int code;
node *next;
};
class linklist
{
public:
node *creat(node*head,int n);
node *select(node*head,int m);
};
node *linklist::creat(node*head,int n)
{
node*s,*p,*q;
int i;
s=new node;
head=s;
s->num=1;
p=s;
for(i=2;i<=n;i++)
{
s=new node;
s->num=i;
p->next=s;
p=s;
}
p->next=head;
cout<<"参加比赛人的编码依次为:";
q=head;
for(i=1;i<=n;i++)
{
cout<<q->num<<" ";
q=q->next;
}
return head;
}
node *linklist::select(node*head,int m)
{
node*p,*q;
int t;
p=head;t=1;
q=p;
do{
p=q->next;
t=t+1;
if(t%m==0)
{
cout<<p->num<<endl;
q->next=p->next;
m=p->code;
delete p;
}
else
q=p;
}while(q==p);
head=p;
return head;
}
void main()
{
linklist l;
int n,m,y;
node *head;
cout<<"请输入参加比赛的人数:";
cin>>n;
l.creat(head,n);
cout<<endl;
cout<<"请依次输入每个人的密码:"<<endl;
int Array[7];
for(int i=0;i<n;i++)
{
cin>>y;
Array[i]=y;
}
cout<<"设定每个人的密码依次为:"<<endl;
for(int x=0;x<n;x++)
{
cout<<Array[x];
}
cout<<"\n请输入开始密码:";
cin>>m;
l.select(head,m);
for(int j=0;j<n;j++)
l.select(head,Array[j]);
cout<<"游戏胜出者的编号为: ";
cout<<head->num;
}
//备注:函数有错!测试数据:参加比赛的人数7 每个人的密码依次3 1 7 2 4 8 4 开始密码6
答案应该为6 1 4 7 2 3 5(即每次删除人的编号排列)每次报数删除的那个人开始,删除的人的密码作下次报数,第一次报数从第一个人开始,报数为6!