数据结构与算法2 线性结构之应用示例:多项式的加法运算

多项式的加法运算:

在这里插入图片描述

运算原理:

在这里插入图片描述
在这里插入图片描述

  • 对于运算后的多项式,需要一个front记录链表第一个结点,rear记录链表最后一个结点,同时需要一个temp临时结点,用于最后释放指向链表第一个结点的头结点
  • 首先为front和rear申请同一个内存空间,然后进入循环比较p1多项式与p2多项式的第一项,如果p1第一项指数大于p2第一项指数,即case=1,则通过Attach函数把p1第一项拷贝下来,Attach函数有三个参数:系数,指数和把该项接到rear后面,最后p1挪向下一项
  • case -1和0同理,但case 0时需要把系数相加,和为0则不拷贝,和不为0则拷贝
  • 如果其中一个多项式已经挪到末尾,另一个多项式剩下的项直接拷贝下来即可,所以需要两个for循环,终止条件是多项式为空
  • 收尾工作:将rear指向NULL,将链表头结点front赋值给temp,fornt指向链表第一个结点,并将临时结点temp(链表的头结点)释放
    在这里插入图片描述
    在这里插入图片描述
  • 注意这里的pRear是指针的指针,则*pRear是指针

多项式的乘法运算

在这里插入图片描述
在这里插入图片描述

  • 先用p1第一项乘以p2得到初始多项式,接下来通过嵌套的while循环计算p1当前项*p2当前项,并插入到初始多项式里,因此需要实现往一个有序数列里插入一个新的元素,使其指数依然呈现递减的趋势

具体操作

在这里插入图片描述
在这里插入图片描述

  • 用while循环来比较要插入的项的指数与已有多项式每一项的指数大小,直到等于或大于已有多项式的当前项
    在这里插入图片描述
  • 如果等于已有多项式的当前项,则合并同类项,合并后如果系数不为0,则改变系数即可,如果系数为0,则需要一个新结点t来表示该项,实现删除操作
  • 如果大于已有多项式的当前项,则实现插入操作,同样需要用到一个新结点t
    在这里插入图片描述
  • 最后的收尾工作,一开始有一个临时的头结点P,现在需要一个t2结点来代替该结点,并使P挪到链表的第一个结点,把t2释放掉即可

多项式的输出:

在这里插入图片描述

  • 由多项式的输出要求:系数 指数 空格 系数 指数 空格…,可以看成第一项前面不需要输出空格,后面每一项的前面都要输出空格,于是可以用一个flag来判别是否为第一项
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值