-1

所以我实现了一个函数 insertEnd 的定义,它在链表的末尾插入一个链表节点。在大多数情况下,它似乎可以独立工作,但是在其他功能(例如连接两个链表)中使用它时我似乎遇到了问题,并且在调用它时控制台上什么也没有显示,所以我什至不能使用断点调试

template <class Object>
void List<Object>::insertEnd(const Object& data) // INSERT: At the end!
{
    ListNode<Object> *getToEnd = head;
    while (getToEnd->getNext() != nullptr)
        getToEnd = getToEnd->getNext();
    ListNode<Object>* newnode = new ListNode<Object>(data, NULL);
    getToEnd->setNext(newnode);
}

编辑:这就是我尝试使用 insertEnd 的内容(一个连接的函数)在此处输入图像描述

我最初所做的是使用在链表开头插入的不同插入,它有效,但这不是这个新的重载函数应该做的(假设将一个列表附加到另一个列表的后面),所以我创建了 insertEnd 来尝试使用它。

4

1 回答 1

0

未知列表是如何定义和初始化的。不过,您似乎应该检查 head 是否等于 NULL。

例如

template <class Object>
void List<Object>::insertEnd(const Object& data) // INSERT: At the end!
{
    ListNode<Object>* newnode = new ListNode<Object>( data, nullptr );

    if ( head == nullptr )
    {
        head = newnode;
    }
    else
    {
        ListNode<Object> *getToEnd = head;
        while ( getToEnd->getNext() != nullptr ) getToEnd = getToEnd->getNext();

        getToEnd->setNext(newnode);
    }
}

并且 head 应该初始化为 nullptr 然后创建列表。

于 2015-07-22T12:23:36.140 回答