我试图在链接列表中的某个位置插入数字。但是我不能正常访问下一个指针,因为它是一个私有成员,并且必须使用getNext函数。我不确定如何使用此函数分配下一个指针,因为它给我错误。

#pragma once

class IntListNode {
public:
    IntListNode(int e, IntListNode *nextptr):
        elem(e), next(nextptr) { }
    int &getElement() {return elem;}
    IntListNode *getNext() {return next;}
private:
    int elem;                   // linked list element value
    IntListNode *next;          // next item in the list
};


这是我尝试的代码,但是我一直收到错误。

void IntegerList::AddAtPosition(int num, int placement)
{
    IntListNode* temp1 = head;

    IntListNode* temp2 = head;

    temp1->getElement() = num;

    if (placement == 0)
    {
        head = temp1;
    }
    else
    {
        for (int i = 0; i < placement - 2; i++)
        {
            temp2 = temp2->getNext();
        }
        temp1->getNext() = temp2->getNext();
        temp2->getNext() = temp1;
        //THe Lines getting errors
    }

}


错误信息:


  E0137“表达式必须是可修改的左值”

最佳答案

将您的getNext()方法更改为:IntListNode*& getNext() {return next;}

IntListNode *getNext()版本将返回next成员的值,但不返回其地址,因此此行不可修改:tempX->getNext() = tempY;



编辑

基于操作规范中提到的限制/条件,我可以想到的唯一方法是:

*temp1 = IntListNode(temp1->getElement(), temp2->getNext());
*temp2 = IntListNode(temp2->getElement(), temp1);

关于c++ - 在C++中使用继承函数在链表中的特定点插入问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57503737/

10-10 07:25