добавление узлов в односвязный список

Я пытаюсь изучить связанные списки. Я только что написал программу, иллюстрирующую связанный список, но она, похоже, не работает. Вот код:

#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данные, как мы идем дальше в программу. Есть идеи, что случилось?
Спасибо

1

Решение

В этом коде:

trav = root;

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

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

вы не меняете trav указатель, который означает, что вы перезаписываете его элементы. После создания нового узла с помощью вызова trav->next = new node; Вы должны «перейти» к следующему узлу, вызвав:

trav = trav-> next;
3

Другие решения

Вы никогда не делаете

trav = trav -> next;

Когда вы заполните список. Вы не двигаетесь в списке, а просто продолжаете изменять корень.

0

Вам не хватает trav = trav -> next после trav -> next = new node; другими словами, вы создаете новый узел, но на самом деле никогда не «шагаете» туда.

0
По вопросам рекламы [email protected]