2016-07-12 18 views
-1

void関数で2つのリストを出力しようとしていますが、出力のために空白が表示されています。リストは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

私は私のコードの12行目にあるvoid function "outputList"を意味しました。 – borninla

答えて

1

、私はNULLにfirstHead、secondHeadのいずれかの初期設定が表示されていないので、彼らはあなたを停止するには、forループのためにNULLになることはありませんでしょう。主な機能にfirstHeadとsecondHeadのあなたの宣言の後

firstHead = secondHead = NULL; 

、動作しているようです:私は、次の行を追加しました。希望があれば