2013-02-10 2 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; 
    } 
} 

Я хочу корень чтобы указать на первый узел, но он, кажется, копирует данные 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 = trav -> next после trav -> next = new node; другими словами, вы создаете новый узел, но вы никогда на самом деле не «ступите» туда.

Смежные вопросы