2015-07-22 4 views
-1

поэтому я внедрил определение функции insertEnd, которое вставляет связанный список в конце связанного списка. По большей части, похоже, он работает сам по себе, но у меня, похоже, проблемы с его использованием в других функциях (например, объединение двух связанных списков), и ничего не появляется на консоли, когда оно вызывается, поэтому я не могу даже использовать точки останова для отладкиСправка по внедрению связанного списка: insertEnd C++

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); 
} 

EDIT: Вот что я пытаюсь использовать insertEnd с (функция, concactenates) enter image description here

То, что я изначально был использовать другую вставку, которая вставляется в начале связанный список, который работал, но это не то, что должна делать эта новая перегруженная функция (предполагается, что она добавляет один список к спине другого), поэтому я создал insertEnd, чтобы попытаться использовать его.

+1

Ничто не выглядит особенно неправильным, если 'head' никогда не может быть' nullptr'. Возможно, есть проблемы с вашим использованием? (Nothing * should * отображается в консоли, когда он вызывается, и это полностью не связано с точками останова.) – molbdnilo

+0

Можете ли вы рассказать, что является вторым параметром, который передается как NULL в конструкторе ListNode

+0

Возможно, есть ошибки в остальной части кода, которую мы не можем видеть здесь. Это означает, что список будет в странном состоянии, поэтому мы не можем рассуждать о том, что будет делать этот «insertEnd». –

ответ

0

Неизвестно, как список определен и инициализирован. Тем не менее, кажется, вы должны проверить, равна ли голова 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); 
    } 
} 

и голова должна быть инициализирована nullptr то список будет создан.