多项式-线性表的应用(初始化问题)(求解答)

本文探讨了在C++中实现多项式加法运算时遇到的初始化问题。作者分享了创建多项式链表的函数,并在尝试进行加法运算时遇到的未初始化错误。经过助教的指导,作者发现需要对多项式结构体指针进行正确初始化,通过传递指针地址解决了问题。文章重点在于理解指针和内存分配在链表操作中的作用。
摘要由CSDN通过智能技术生成

今天写多项式的加法运算,和乘法运算,但是在写加法运算的过程中遇到点问题,有关初始化的。

//多项式的创建
void Create3(polynominal* p)
{
	PNode* pn, * pre, * q;
	int i;
	p->head = (PNode*)malloc(sizeof(PNode)); //生成表头结点
	p->head->exp = -1;
	p->head->link = NULL;
	printf("\n注意:输入‘#’则结束输入");
	for (i=1;;i++)
	{
		pn = (PNode*)malloc(sizeof(PNode));
		printf("\n第i个单项式的系数为:");
		scanf_s("%d", &pn->coef); //输入项的系数
		printf("\n第i个单项式的指数为:");
		scanf_s("%d", &pn->exp); //输入项的指数
		if (pn->exp = '#')
			break; //结束输入
		pre = p->head;
		q = p->head->link;
		while (q && q->exp > pn->exp) //插入项并保持多项式的各项为降幂排列
		{
			pre = q;
			q = q->link;
		}
		pn->link = q;
		pre->link = pn;
	}
}

上面那个创建函数里:

这一段应该是多项式的初始化吧(这一段函数是教材里面现有的) 

问题来了!!!下面是我一开始写的主函数:

void main()
{

	polynominal* p1, * p2;
	/*------------------------加法操作-----------------------------*/
	printf("\n请依次输入第一个多项式中单项式的系数与指数");
	Create3(p1);
	printf("\n第一个多项式为:");
	Output3(*p1);
}

 

 它说我未初始化,我问助教,他说我 p1 p2 没有分配空间并赋值为null

后来我参考之前写的链表代码,改成下面这个:

void main()
{
	polynominal p1, p2;
	/*------------------------加法操作-----------------------------*/
	printf("\n请依次输入第一个多项式中单项式的系数与指数");
	Create3(&p1);
	printf("\n第一个多项式为:");
	Output3(p1);
}

 然后这个就成功了,我不太懂这是为什么。求大佬帮我解答一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值