链表打印问题

Linked List Printing Issue

本文关键字:问题 打印 链表      更新时间:2023-10-16

我试图通过 void 函数打印出两个列表,但我得到的只是输出的空白。列表在没有 void 函数的情况下打印正常,但我想了解为什么会发生这种情况。谢谢。

附言请忽略合并列表功能。这是针对我正在处理的问题的另一部分。

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

我所知,我没有看到 firstHead、secondHead 为 NULL 的任何初始化,因此它们永远不会为 NULL 以停止您的 for 循环。我添加了以下行:

firstHead = secondHead = NULL;

在主函数中声明第一头和第二头之后,它似乎有效。希望有帮助