gpt4 book ai didi

c++ - 使用链接列表制作复制构造函数

转载 作者:行者123 更新时间:2023-11-30 04:25:59 24 4
gpt4 key购买 nike

我当前作业的这一部分让我完全难住了:

我正在尝试构建一个包含复制构造函数的 LinkedList 类,它本身调用静态方法 (*makeCopy())。我无法弄清楚如何使 makeCopy 方法工作(所有方法 header 都在作业中提供给我们)。

class ListNode
{
public:
ListNode(double v, ListNode *p)
{
value = v;
next = p;
}
private:
double value;
ListNode *next;
friend class LinkedList; // LinkedList has friend status
};

// The linked list class itself
class LinkedList
{
public:
//Add number to Linked List
void add(double x)
{
if (head == NULL)
{
head = new ListNode(x, NULL);
return;
}
else
{
ListNode *nodePtr = head;
head = new ListNode(x, nodePtr);
}

}
LinkedList() { head = NULL; }

//Default destructor
~LinkedList()
{
ListNode *nodePtr = head;
while (nodePtr != NULL)
{
ListNode *garbage = nodePtr;
nodePtr = nodePtr->next;
delete garbage;
}
}

//Copy Constructor
LinkedList(LinkedList &);

//Copy function
static ListNode *makeCopy(ListNode *pList);

private:
ListNode * head;

};

下面是我尝试编写 makeCopy 函数的方式:

LinkedList::LinkedList(LinkedList &list)
{
*makeCopy(list.head);
}

static ListNode *makeCopy(ListNode *pList)
{
if(pList->value == NULL)
{
return NULL;
}
else
{
ListNode *node = pList;

while(node != NULL)
{
ListNode newOne = *node;
node = node->next;
}
}

return;
}

首先,我继续收到错误消息“成员 ListNode::value 是 innaccesible”。其次,我是 C++ 的新手,我很确定我已经走了很远。如果有人可以帮助我朝着正确的方向前进,将不胜感激。谢谢

这是我当前对复制构造函数和 makeCopy 方法的迭代。不幸的是,ListNode 构造函数以及所有方法 header 都是赋值的一部分。我们必须为他们编写代码。我现在得到的错误是:两个 return 语句都说“错误:构造函数或析构函数可能不返回值。”我完全迷失了这个,因为这只是一个返回语句,我没有看到构造函数或析构函数。

LinkedList::LinkedList(LinkedList &list)
{
LinkedList *copy = new LinkedList();

while(list.head != NULL)
{
ListNode node = *makeCopy(list.head);
copy->add(node.value);
list.head = head->next;
}

return *copy;
}

ListNode * LinkedList::makeCopy(ListNode *pList)
{
ListNode node = *pList;

return *node;
}

最佳答案

static ListNode *makeCopy(ListNode *pList)

应该是

ListNode * LinkedList::makeCopy(ListNode *pList)

您的版本定义了一个带有内部链接的自由函数,但没有定义成员。

关于c++ - 使用链接列表制作复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11789257/

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