我正在尝试学习链接列表。我刚刚编写了一个程序来说明链接列表,但它似乎不起作用。这是代码:
#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
的数据。知道什么是错的吗?
谢谢
答案 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;那里。