【数据结构练习】01

多项式的加法运算实现

实现多项式的加法,通过链表数据结构编写

struct PolyNode
{
	int coef//系数项
	int expon; //指针项
	PolyNode Next;
}
typedef struct PolyNode *Polynominal;
Polynominal P1,P2;
Polynominal PolyAdd(Polynominal P1,Polynaminal P2)
{
	Polynominal front,rear,temp;
	//创建一个result的用来存放最终多项式P1+P2的最终结果
	rear = (PolyNode)malloc((instruct PolyNode));
	front = rear;
	while(P1&P2)
	{
		switch(Compare(P1->EXPON,p2->expon))
		{
			case 1:  //P1->指数项高
				Attach(P1->coef,P1->expon,&rear);
				P1=P1->link;
				break;
			case -1:  //P2->指数项高
				Attach(P2->coef,P2->expon,&rear);
				P2=P2->link;
				break;
			case 0:  //P1->指数项高
				Attach(P1->coef+P2->coef,P1->expon,&rear);
				P1=P1->link;
				P2=P2->link;
				break;		
		}
	}
	for(;P1;P1=P1->link) Attach(P1->coef,P1->EXPON,&rear);
	for(;P2;P2=P2->link) Attach(P2->coef,P2->EXPON,&rear);
	temp = front;
	front = front->link;
	free(temp);
	return front;
}

PolyNominal Attach(int coef,int expon,Polynominal *Prear) //Prear 是一个指针,*Prear代表传进来第一个指针的地址
{
	Polynominal P;
	p->coef = coef;
	p->expon = expon;
	p->link = NULL;
	(*Prear)->link = P;
	*Prear = p
	
}

这里解释一下:为什么最后一行用PRear而不是PRear:
划重点:涉及重点:理解传值引用和调用引用。
函数调用中为变量赋值,传入其指针,但是如果想让传入指针的数值改变的话,我们需要传入指针的指针。
pRear=P:在这里PRear只是rear指针的复制版本,PRear的改变,变成P的地址以后,并没有对rear的地址进行任何的修改------这里只是进行了上一句话:函数调用为变量赋值,传入其指针这一句话。但是PRear并没有指向
rear的指针(地址)
如果想要改变rear的地址,那么需要将rear的真实地址传入而不是rear的复制地址
但是传入rear的真实地址必须是(&rear)这个**(&rear)(*PRear)**这样理解PRear表示传入的rear这个指针的地址赋值给了PRear,然后前边加上*表示PRear现在与rear共享地址==
如果觉得解释好可以三连。
本人才疏学浅,希望大家不足指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值