1

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

#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当我们进一步进入程序时,它似乎复制了 的数据。知道有什么问题吗?
谢谢

4

3 回答 3

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;
于 2013-02-10T14:36:30.907 回答
0

你从不做

trav = trav -> next;

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

于 2013-02-10T14:36:03.777 回答
0

之后你失踪trav = trav -> nexttrav -> next = new node;换句话说,您创建了一个新节点,但您从未真正“跨步”到那里。

于 2013-02-10T14:36:23.767 回答