yan0524cc 2021-06-02 14:57 采纳率: 0%
浏览 29

单链表main函数中调用打印函数无输出,反而在初始化函数中调用打印函数有输出

/**
*给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
*请你将两个数相加,并以相同形式返回一个表示和的链表。
*你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
*/
#include <iostream>
#include<time.h>
using namespace std;
struct ListNode
{
	int val;
	ListNode* next;
	ListNode() :val(0), next(nullptr) {}
	ListNode(int x) :val(x), next(nullptr) {}
	ListNode(int x, ListNode* next) :val(x), next(next) {}
};
//函数声明
void initListNode(ListNode*, ListNode*); //列表初始化
void printfListNode(ListNode* listNode);//列表打印输出

class Solution {
public:
	ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {

	}
};
int main()
{
	Solution solution;
	//solution.addTwoNumbers();
	ListNode* l1 = nullptr, * l2 = nullptr;
	initListNode(l1, l2);  //单链表初始化数据
	printfListNode(l1);  //********这里打印不出结果,反而在初始化函数中可以打印结果出来*******
	//printfListNode(l2); 
	return 1;
}

//单链表初始化
void initListNode(ListNode* head1, ListNode* head2) {
	ListNode *nextNode1 = nullptr, * nextNode2 = nullptr;
	srand(time(NULL));
	for (int i = 0; i < 3; i++)
	{
		int a = rand() % 9 + 1;
		int b = rand() % 9 + 1;
		cout << "a=" << a << ",b=" << b << endl;
		if (i == 0) 
		{
			head1 = new ListNode(a, nullptr);
			head2 = new ListNode(b, nullptr);
			nextNode1 = head1;
			nextNode2 = head2;
		}
		else
		{
			nextNode1->next = new ListNode(a, nullptr);
			nextNode2->next = new ListNode(b, nullptr);
			nextNode1 = nextNode1->next;
			nextNode2 = nextNode2->next;
		}
	}
	//printfListNode(head1); ********单链表在这里就可以打印出结果来
	//printfListNode(head2);
}
//单链表打印输出
void printfListNode(ListNode* listNode)
{
	while (listNode)
	{
		cout << listNode->val << " ";
		listNode = listNode->next;
	}
	cout << endl;
}
  • 写回答

1条回答 默认 最新

  • lshen01 2023-03-17 15:39
    关注

    参考GPT和自己的思路:

    问题出在initListNode函数的参数传递上。由于传递的是指针的值,因此在函数内部修改指针的指向并不会影响到main函数中的指针。

    正确的做法是使用引用传递,即将函数声明改成:

    void initListNode(ListNode*& head1, ListNode*& head2);

    这样,在函数内部修改指针的指向就可以正确地影响到main函数中的指针了。

    评论

报告相同问题?

悬赏问题

  • ¥15 模电中二极管,三极管和电容的应用
  • ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络