链接列表打印问题

时间:2016-07-12 21:36:57

标签: c++ pointers data-structures linked-list

我试图通过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;
}

1 个答案:

答案 0 :(得分:1)

据我所知,我没有看到firstHead的初始化,secondHead为NULL,所以它们将永远不会为你的for循环停止为NULL。我添加了以下行:

firstHead = secondHead = NULL;

在main函数中声明firstHead和secondHead之后,它似乎正常工作。希望有所帮助