链接列表函数实现帮助:insertEnd C ++

时间:2015-07-22 12:09:07

标签: c++ insert linked-list class-template

所以我实现了一个函数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(一个连接的函数)enter image description here

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

1 个答案:

答案 0 :(得分: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,然后创建列表。