2013-02-10 69 views
1

我努力学习链接lists.I只是写了一个程序出一个链表,但它似乎并没有work.Here的代码没有:节点添加到单链表

#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

在此代码:

trav = root; 

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

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

你不改变trav指针,这意味着你要覆盖其成员。通过调用trav->next = new node;创建新节点后,您应该通过调用“移动”到下一个节点:

trav = trav-> next; 
0

当您填写清单你永远不会做

trav = trav -> next; 

。你不要在列表中移动,只是不断修改根目录。

0

您在trav -> next = new node后缺少trav = trav -> next;换句话说,你创建了一个新的节点,但你从来没有真正“步”到那里。