0

Insert 是一种将项目附加到我的链表末尾的方法。

无法弄清楚如何为 Node 为空的情况编写代码,我只想添加它。

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 回答