2016-07-12 8 views
-1

Ich versuche, zwei Listen durch eine Void-Funktion auszudrucken, aber alles, was ich bekomme, ist ein Leerzeichen für die Ausgabe. Die Listen drucken ohne Leerstelle, aber ich würde gerne verstehen, warum das passiert. Vielen Dank.Linked List Printing Problem

P.S. Bitte ignorieren Sie die mergeLists-Funktion. Das ist für einen anderen Teil des Problems gedacht, an dem ich arbeite.

#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

Was meinst du mit 'void function'? –

+0

Ich denke, wenn Sie durch das Programm gehen, werden Sie Ihr Problem ziemlich schnell finden ... – Frecklefoot

+0

Ich meinte die Void-Funktion "outputList", die in Zeile 12 in meinem Code ist. – borninla

Antwort

1

Von dem, was ich sagen kann, ich sehe keine Initialisierung von first, secondHead auf NULL, so werden sie nie Ihr NULL sein für for-Schleife zu stoppen. Ich fügte hinzu, die folgende Zeile:

firstHead = secondHead = NULL; 

nach den Erklärungen von first secondHead in der Hauptfunktion, und es scheint zu funktionieren. Hoffe, dass hilft