该代码打印出一系列无意义的数字

时间:2019-03-30 04:03:34

标签: c++

所以,我要靠,问题是插入头 我所期望的:3 2 1 打印出的内容:1746464 我不知道这些数字的含义,有人可以指出我的代码出了问题的地方,我将非常高兴,感谢您的阅读 这是我的代码:

#include <iostream>

using namespace std;
class node
{
private:
    int value;
    node *pnext;
    node *phead;

public:
    node ()
    {
        pnext=  NULL;
        phead= NULL;
    }
    node* inserthead(int b);
    void print();
};
node* node::inserthead(int _value)
{
    node *p= new node ;
    value = _value;
    pnext = phead;
    phead =p;
    return phead;
}
void node:: print ()
{
    node* p = phead;
    while(p != NULL)
    {
        cout << p->value << endl;
        p= p -> pnext;
    }
}
int main()
{
    node a;

    a. inserthead(1);
    a. inserthead(2);
    a. inserthead(3);
    a.print();
    return 0;
}

1 个答案:

答案 0 :(得分:0)

node* node::inserthead(int _value)
{
    node *p= new node ;
    value = _value;
    pnext = phead;
    phead =p;
    return phead;
}

在根节点中设置valuenext,而不添加node,因此该值进入错误的位置,而node则不链接。当您尝试打印时,程序将在添加的最后一个节点中打印未初始化的value。其余节点丢失了。

代替使用

node* node::inserthead(int _value)
{
    node *p= new node ;
    p->value = _value; // new node gets value
    p->pnext = phead; // new node gets linked.
    phead =p;
    return phead;
}