首页 > 解决方案 > 在 C++ 中使用继承函数在链表中的某个点插入问题

问题描述

我正在尝试在链表中的某个位置插入一个数字。但是我无法正常访问下一个指针,因为它是私有成员,并且必须使用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 "表达式必须是可修改的左值"

标签: c++listclasspointerslinked-list

解决方案


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

IntListNode *getNext()版本将返回next成员的值,而不是它的地址,因此该行不可修改tempX->getNext() = tempY


编辑

根据OP提到的限制/条件,我能想到的唯一方法是:

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

推荐阅读