gpt4 book ai didi

c++ - C++中继承函数的链表中某一点插入的问题

转载 作者:行者123 更新时间:2023-11-28 04:12:02 25 4
gpt4 key购买 nike

我想在链表的某个位置插入一个数字。但是我不能正常访问 next 指针,因为它是私有(private)成员,必须使用 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 "expression must be a modifiable lvalue"

最佳答案

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

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


编辑

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

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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com