我试图通过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 :(得分:1)
据我所知,我没有看到firstHead的初始化,secondHead为NULL,所以它们将永远不会为你的for循环停止为NULL。我添加了以下行:
firstHead = secondHead = NULL;
在main函数中声明firstHead和secondHead之后,它似乎正常工作。希望有所帮助