1

連結リストを学習しようとしています。連結リストを示すプログラムを作成しましたが、機能していないようです。コードは次のとおりです。

#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、プログラムをさらに進めると のデータがコピーされるようです。何が問題なのですか?
ありがとう

4

3 に答える 3

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;
于 2013-02-10T14:36:30.907 に答える
0

あなたは決してしません

trav = trav -> next;

リストを埋めるとき。リスト内を移動せず、ルートを変更し続けます。

于 2013-02-10T14:36:03.777 に答える
0

trav = trav -> nextの後に行方不明trav -> next = new nodeです。つまり、新しいノードを作成しますが、実際にそこに「ステップ」することはありません。

于 2013-02-10T14:36:23.767 に答える