2016-07-12 2 views
-1

Я пытаюсь распечатать два списка через функцию void, но все, что я получаю, является пустым для вывода. Списки прекрасно печатаются без функции void, но я хотел бы понять, почему это происходит. Спасибо.Связанный список Печать Проблема

P.S. Пожалуйста, не обращайте внимания на функцию mergeLists. Это предназначено для другой части проблемы, над которой я работаю.

#include <iostream> 

using namespace std; 

struct Node { 
    int data; 
    Node *link; 
}; 

typedef Node* NodePtr; 

void headInsert(NodePtr& head, int the_number); 
NodePtr mergeLists(NodePtr& firstList, NodePtr& secondList); 
void outputList(NodePtr head); 

int main() 
{ 
    NodePtr firstHead, secondHead; 

    headInsert(firstHead, 9); 
    headInsert(firstHead, 7); 
    headInsert(firstHead, 5); 
    headInsert(firstHead, 3); 

    outputList(firstHead); 

    headInsert(secondHead, 8); 
    headInsert(secondHead, 6); 
    headInsert(secondHead, 4); 
    headInsert(secondHead, 2); 

    outputList(secondHead); 

    //combinedList = mergeLists(firstHead, secondHead); 

    return 0; 
} 

void headInsert(NodePtr& head, int number) 
{ 
    NodePtr temp; 
    temp = new Node; 

    temp->data = number; 

    temp->link = head; 
    head = temp; 
} 

NodePtr mergeLists(NodePtr& firstList, NodePtr& secondList) 
{ 
    NodePtr mainList, iter; 

    for(iter = firstList; iter != NULL; iter = iter -> link) 
     headInsert(mainList, iter->data); 

    for(iter = secondList; iter != NULL; iter = iter -> link) 
     headInsert(mainList, iter->data); 

    return mainList; 
} 

void outputList(NodePtr head) 
{ 
    for(NodePtr iter = head; iter != NULL; iter = iter -> link) 
     cout << iter->data << " "; 
    cout << endl; 
} 
+0

Что вы подразумеваете под "void function"? –

+0

Я думаю, что если вы пройдете через программу, вы быстро найдете свою проблему ... – Frecklefoot

+0

Я имел в виду функцию void «outputList», которая находится в строке 12 в моем коде. – borninla

ответ

1

Из того, что я могу сказать, я не вижу никакой инициализации firstHead, secondHead в NULL, поэтому они никогда не будет NULL для вашего для петли, чтобы остановить. Я добавил следующую строку:

firstHead = secondHead = NULL; 

после ваших заявлений о firstHead и secondHead в основной функции, и это, кажется, работает. Надеюсь, что поможет

Смежные вопросы