为什么我的链表打印地址而不是值



这是用于合并两个排序链表(按排序顺序(的代码。

我的代码是打印地址,而不是打印排序列表。我不知道问题出在哪里。

这是我的代码:

#include <iostream>
using namespace std;
class node
{
public:
int data;
node *next;
node(int d)
{
data = d;
next = NULL;
}
};
node *Merge(node *head1, node *head2)
{
if (head1 == NULL)
{
return head2;
}
if (head2 == NULL)
{
return head1;
}
node *c = NULL;
if (head1->data < head2->data)
{
c = head1;
c->next = Merge(head1->next, head2);
}
else
{
c = head2;
c->next = Merge(head1, head2->next);
}
return c;
}
void InsertAtTail(node *&head, int data)
{
if (head == NULL)
{
head = new node(data);
return;
}
node *tail = head;
while (tail->next != NULL)
{
tail = tail->next;
}
tail->next = new node(data);
return;
}
void display(node *head)
{
if (head == NULL)
{
cout << "The Linked List is empty !!";
return;
}
while (head != NULL)
{
cout << head->data << " -> ";
head = head->next;
}
cout << endl;
}
int main()
{
node *head1 = NULL;
node *head2 = NULL;
int n1, n2, data;
cout << "Creating 1st Linked List: " << endl;
cout << "Enter the number of nodes you want to enter: ";
cin >> n1;
for (int i = 0; i < n1; i++)
{
cout << "Enter the data: ";
cin >> data;
InsertAtTail(head1, data);
}
cout << "Creating 2nd Linked List: " << endl;
cout << "Enter the number of nodes you want to enter: ";
cin >> n2;
for (int i = 0; i < n2; i++)
{
cout << "Enter the data: ";
cin >> data;
InsertAtTail(head2, data);
}
display(head1);
display(head2);
node *NewNode = NULL;
NewNode = Merge(head1, head2);
cout << "The sorted list is: " << endl;
cout << NewNode << endl;
return 0;
}

这是我输出的屏幕截图:https://i.stack.imgur.com/dUv7A.png

所有其他功能正常工作。但在调用Merge函数后,它将打印地址(heaxadecimal(值,而不是打印新排序的链表。

似乎只需要将cout << NewNode << endl;替换为:display(NewNode);

我刚刚将cout << NewNode << endl;替换为cout << display(NewNode) << endl;

而且,它正在发挥作用。

代码很好。注意那些愚蠢的错误。一切顺利。

代码cout << NewNode << endl;的倒数第二行将打印地址,因为NewNode是一个指针,而不是用于打印所有节点的调用display(NewNode)