| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 421 人关注过本帖, 1 人收藏
标题:求助一简单链表问题
只看楼主 加入收藏
hxxgy
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2009-4-7
收藏(1)
 问题点数:0 回复次数:5 
求助一简单链表问题
我写的这个代码的ShowLink函数有问题,但是就是不知道怎么改。不运行show函数的时候程序还能正常运行,只要一运行就有问题。

#include <iostream.h>


struct Node
{
    int i;
    Node *pt;
};

Node *head = NULL;

int n;               //记录节点个数

Node* CreatLink()
{
    Node *p, *next;
    p = next = new Node;
   
    cout<<"value"<<endl;
    cin>>p->i;
   
    if (head = NULL)
    {
        head = p;
    }
    else
    {
        while ( p->i )
        {
            next = new Node;
            cout<<"value"<<endl;
            cin>>next->i;
        
            p->pt = next;
            p = next;
            n++;
        }
        
    }
    p->pt = NULL;
    return head;

}

void ShowLink (Node *ptp)
{

    while (ptp->pt)
    {
        cout<<n<<endl;
        cout<<ptp->i<<endl;
        ptp=ptp->pt;
    }
}

void main ()
{
    CreatLink();
    ShowLink(CreatLink());
   
    cout<<n<<endl;

}
搜索更多相关主题的帖子: 链表 
2009-11-17 15:48
flyingcloude
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:6
帖 子:598
专家分:1512
注 册:2008-1-13
收藏
得分:0 
程序代码:
Node* CreatLink()
{
    Node *p, *next;
    p = next = new Node;
 
    cout<<"value"<<endl;
    cin>>p->i;
 
    if (head == NULL) //小心些,或者以后可以写成if(NULL == head),这样就不会出现if(NULL = head)的问题了
    {
        head = p;
    }
    else
    {
        while ( p->i )
        {
            next = new Node;
            cout<<"value"<<endl;
            cin>>next->i;
      
            p->pt = next;
            p = next;
            n++;
        }
      
    }
    p->pt = NULL;
    return head;
}


你能学会你想学会的任何东西,这不是你能不能学会的问题,而是你想不想学的问题
2009-11-17 22:07
hxxgy
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2009-4-7
收藏
得分:0 
谢谢。晕,这种小错误,真是一不小心就会犯了。
2009-11-18 13:43
hxxgy
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2009-4-7
收藏
得分:0 
不过貌似现在没错误了,但是我的show函数仍然没工作,就是我输入完毕后,他不显示我的链表节点。这是怎么回事?
2009-11-18 13:46
逆光
Rank: 2
等 级:论坛游民
帖 子:14
专家分:12
注 册:2009-9-7
收藏
得分:0 
貌似将以下代码删除能正确计算结点个数
   
    //cout<<"value"<<endl;
    //cin>>p->i;
   
 不删则输入1,2,3,0显示为2

不知道对不对,至于原因还请各位大大指点一二   
2009-11-18 19:32
逆光
Rank: 2
等 级:论坛游民
帖 子:14
专家分:12
注 册:2009-9-7
收藏
得分:0 
这样好像是对的

#include <iostream.h>


struct Node
{
    int i;
    Node *pt;
};

Node *head = NULL;

int n=1;               //记录节点个数

Node* CreatLink()
{
    Node *p;
    p  = new Node();
   
    cout<<"value"<<endl;
    cin>>p->i;
   
    if (head == NULL)
    {
        head = p;
    }
    else
    {
        while ( p->i )
        {   
            
            cout<<"value"<<endl;
            cin>>p->i;
        
            p->pt = p;
            
            ++n;
        }
        n++;
        
    }
    p->pt = NULL;
    return head;

}

void ShowLink (Node *ptp)
{

    while (ptp->pt)
    {
        cout<<n<<endl;
        cout<<ptp->i<<endl;
        ptp=ptp->pt;
    }
}

void main ()
{
    CreatLink();
    ShowLink(CreatLink());
   
    cout<<n<<endl;

}

2009-11-18 20:04
快速回复:求助一简单链表问题
数据加载中...
 
   



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

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