标题:约瑟夫问题。输出的值总是变成地址了,求帮忙解答!!!!!!!
只看楼主
书生小白
Rank: 2
等 级:论坛游民
帖 子:39
专家分:16
注 册:2011-6-14
结帖率:42.86%
已结贴  问题点数:20 回复次数:1 
约瑟夫问题。输出的值总是变成地址了,求帮忙解答!!!!!!!
#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 编辑 ]
搜索更多相关主题的帖子: head next include 约瑟夫 public 
2011-09-17 18:13
czsbc
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:469
专家分:1700
注 册:2008-12-13
得分:20 
程序代码:
#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=p->next;               
         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->next;       
     for(i=1;i<=a;i++)
     {
         cout<<p->num<<"   "<<p->pwd<<endl;
         p=p->next;
     }
     delete head;
     for(i=1;i<=n;i++)//显示出列人的序号
     {
         head=p;
         if(n==1)
         {
             while(head->next!=p)
                 head=head->next;
             n=2;
             p=head;
         }
         if(i==n-1)
         {
             q=p->next;
             n=q->pwd;//保存该序号人的密码   
             cout<<"出列人的序号:";
             cout<<q->num<<endl;
        
             p->next=q->next;//将前一个结点和后一个结点连接起来
             delete q;//释放结点
             p=p->next;                                  
             i=0;//初始化i的值
             continue;
         }
         p=p->next;
         if(p==p->next)
         {
             cout<<"出列人的序号:";
             cout<<p->num<<endl;
             delete p;
             break;
         }
        
     }
     //system("pause");

    return 0;

 }

 


[ 本帖最后由 czsbc 于 2011-9-17 22:20 编辑 ]
2011-09-17 22:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-350171-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.158799 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved