我试图在链接列表中的某个位置插入数字。但是我不能正常访问下一个指针,因为它是一个私有成员,并且必须使用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/