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

标签 c++ list linked-list append element

我已经尝试搜索答案,但似乎找不到任何符合我的答案。我正在为学校做一个模板链表,但我遇到了很多错误。但我现在只需要一个帮助。我应该将一个元素 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/

相关文章:

c++ - 在循环内使用 list.push_back(),绕过使迭代器无效

c - 单链表上最后一个不需要的节点

c++ - 在创建新文件时显示 "<SFML/Graphics.hpp> no such file or directory"

C++ 模板化类给出 `error: non-template X used as template`

c++ - 如何找出 cpp 中的字符串中是否有 std::vector?

python - 如何将列表中的元素合并到 Python 3 中的另一个列表中?

list - Haskell:删除最大列表

c++ - "no appropriate default constructor available"用于 C++ 派生类

python - 一旦搜索到列表中的字符串,有什么方法可以获取列表的名称吗?

java - ArrayList 与 LinkedList