0

Insert は、リンクされたリストの最後に項目を追加するメソッドです。

Node が null の場合のコーディング方法がわかりません。追加したいだけです。

struct Node{
       int data;
       Node *next;

       Node(int data):data(data),next(NULL){}

       void insert(int data){
            if (this==NULL){
               this=new Node(data); // compiler is complaining here.
                                    // how would I go about setting the value of this (which is presently NULL) to a new Node?
            }
       }
}
4

2 に答える 2

3

このポインタに値を割り当てることはできません。これは特別なキーワードであり、常に有効なメモリ ブロックを指す必要があります。あなたの使用法を見ると、これを意味しようとしている可能性があります:

void insert(int data){
            if (!next){
               next = new Node(data);

            }
于 2012-06-05T03:36:21.233 に答える
1

このようなもの:

void insert(int data)
{
    Node* newNode = new Node(data);

    if (next!=NULL)
        newNode->next = next;
    next = newNode;
}

「this」に直接割り当てることはできません。考慮する必要があるのは、空のリストを表す方法です。最も可能性が高いのは次の方法です。

Node* head = 0;

したがって、最初のノードを追加します

head = new Node(data);
于 2012-06-05T03:38:19.167 に答える