将节点添加到单链表中

时间:2013-02-10 14:34:25

标签: c++ linked-list singly-linked-list

我正在尝试学习链接列表。我刚刚编写了一个程序来说明链接列表,但它似乎不起作用。这是代码:

#include <iostream>
using namespace std;

struct node
{
    int data;
    node* next;
};

int main(int argc, const char * argv[])
{
    node* trav;
    node* root;
    root = new node;

    trav = root;

    trav -> data = 4;
    trav -> next = new node;

    trav -> data = 5;
    trav -> next = new node;

    trav -> data = 6;
    trav -> next = 0;
    trav = root;

    while (trav!=0) {
        std::cout<<trav->data;
        trav=trav->next;
    }
}

我希望root指向第一个节点,但是当我们进一步进入程序时,它似乎会复制trav的数据。知道什么是错的吗? 谢谢

3 个答案:

答案 0 :(得分:3)

在此代码中:

trav = root;

trav -> data = 4;
trav -> next = new node;

trav -> data = 5;
trav -> next = new node;

您没有更改trav指针,这意味着您要覆盖其成员。通过调用trav->next = new node;创建新节点后,您应该通过调用“

”“移动”到下一个节点
trav = trav-> next;

答案 1 :(得分:0)

你永远不会

trav = trav -> next;

填写清单时。您不会在列表中移动,只是继续修改根目录。

答案 2 :(得分:0)

trav = trav -> next之后您遗失trav -> next = new node;换句话说,你创建了一个新的节点,但实际上你从未实际的步骤&#34;那里。