gpt4 book ai didi

c++ - 如何将元素 append 到链表的末尾?

转载 作者:太空狗 更新时间:2023-10-29 23:07:34 24 4
gpt4 key购买 nike

我已经尝试搜索答案,但似乎找不到任何符合我的答案。我正在为学校做一个模板链表,但我遇到了很多错误。但我现在只需要一个帮助。我应该将一个元素 append 到链表的末尾,但我们得到:

append(ListNode)

起初,我想:“好吧,创建一个新节点,然后在后面插入……”但我仔细阅读了它,我必须创建另一个函数,将两个链表连接在一起。所以我想我必须在链表上 append 一个已经制作好的元素。这样当我进行 concat 时,我可以使用我的追加来 append 两者。或者至少……这只是我的想法……

所以一开始,我做了:

template<typename NODETYPE> 
bool List<NODETYPE>::append(NODETYPE &value)
{
ListNode<NODETYPE> *newPtr = getNewNode(value); //creates new node

if(isEmpty()) //checks if list is empty
{
firstPtr = lastPtr = newPtr;
return true;
}
else //inserts new node at end of list
{
ListNode<NODETYPE> *tempPtr = lastPtr;

tempPtr->nextPtr=newPtr;
lastPtr = newPtr;
return true;
}
}

但是因为这只是 append 了一个新节点,所以我不能使用它。有没有办法 append 一个已经创建的节点?例如:将另一个链表 append 到前一个链表?

我的连接(与我搜索过的其他连接不同)只使用一个链表。之前的链表对象调用函数,然后附上一个列表

concat(&List)

所以我很困惑。感谢您的帮助,谢谢!

最佳答案

首先,您需要更改 append 方法的签名,以便将 ListNode* 传递给它并 append 它,无论它是单个节点还是整个链表。之后,您的代码应如下所示:

template<typename NODETYPE> 
bool List<NODETYPE>::append(ListNode<NODETYPE>* newPtr)
{
//ListNode<NODETYPE> *newPtr = getNewNode(value); //creates new node

if(isEmpty()) //checks if list is empty
{
firstPtr = lastPtr = newPtr;
return true;
}
else //inserts new node at end of list
{
ListNode<NODETYPE> *tempPtr = lastPtr;

tempPtr->nextPtr=newPtr;
lastPtr = newPtr;
while(lastPtr->nextPtr != NULL)
lastPtr = lastPtr->nextPtr;
return true;
}
}

我还没有编译它,所以可能会有一些错误,但你明白了。

关于c++ - 如何将元素 append 到链表的末尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12506022/

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