约瑟夫问题。输出的值总是变成地址了,求帮忙解答!!!!!!!
#include <iostream>using namespace std;
typedef struct date
{
public:
int num;//存放序号
int pwd;//存放密码
struct date *next;
}dateNode;
int main()
{
int i=1,a,m,n;
date *p,*q,*head;
head=new dateNode;
cout<<"请输入人数的个数";//循环人数
cin>>a;
if(a<0)
cout<<"输入错误,请重新输入";
p=head;
cout<<"密码必须为正整数"<<endl;
for(i=1;i<=a;i++)//建立链表
{
p->next=new dateNode;
p->num=i;
cout<<"请给"<<p->num<<"号人设置密码";//设置初始化数据
cin>>m;
if(m<1)
{
cout<<"输入错误";
return 0;
}
p->pwd=m;
p=p->next;
if(i==a)
{
p->next=head->next;
break;
}
}
cout<<"请输入第一个随机密码";
cin>>n;
if(n<1)
{
cout<<"输入错误";
return 0;
}
q=p=head;
for(i=1;i<=a;i++)
{
cout<<p->num<<" "<<p->pwd<<endl;
p=p->next;
}
for(i=0;i<=n;i++)//显示出列人的序号
{
if(i==n-1)
{
q=p;
n=p->pwd;//保存该序号人的密码
cout<<"出列人的序号:";
cout<<p->num<<endl;
p->next=q->next->next;//将前一个结点和后一个结点连接起来
p=p->next;
q=q->next;
delete q;//释放结点
i=0;//初始化i的值
continue;
}
p=p->next;
}
//system("pause");
return 0;
}
[ 本帖最后由 书生小白 于 2011-9-17 18:28 编辑 ]