2013-02-10 102 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;換句話說,你創建了一個新的節點,但你從來沒有真正「步」到那裏。