一元多项式运算器【数据结构/C语言】(加减乘法以及升降幂排序)

设有一元多项式Am(x)和Bn(X),编程实现多项式Am(x)和Bn(x)的加法、减法和乘法运算。其中多项式描述为:

Am(x)=A0+A1x1+A2x2+A3x3+….+Amxm;

Bn(x)=B0+B1x1+B2x2+B3x3+….+Bnxn。

(代码参考浙江大学数据结构和网上,以及加入了自己的一些理解)

我当时卡在升降幂排序问题上,升降幂的大致思路是,s申请结点输入数据,p为头指针(空指针),p1是p的下一个指针(也就是第一个有数据的指针),当前输入的s和p1比较expon,(这里以降幂为例),若s的expon小于p1的expon,p1移动至下一个,p2(一开始也指向空的头结点)也随之移动,令q=p2,也就是q记录当前有最大expon的结点;若s的expon大,则返回,将s的next指向p1结点(s大,因此是降幂),将q的next指向s(q是上一个最大的expon,因此q大于s);相等就加在一起,然后再输入新的s。

(还有一个LocateElem函数里的参数传递问题,当时不理解(Polynomial p, Polynomial s, Polynomial &q)里的q为什么传的是地址,个人理解这里的q是个引用传递,在函数里执行后修改了q的值要返回到readpoly里,如果是Polynomial q,只是在函数作用域里面新建了一个局部变量,不能修改后再传出去,如果理解有误还请指出)


 


#include <stdio.h>
#include <stdlib.h>
typedef struct PolyNode *Polynomial;
struct PolyNode{
	int coef;
	int expon;
	struct PolyNode *link;
};
void attach(int c,int e,Polynomial *prear)//Rear一开始指向空结点,prear是指针的指针 
{
  • 4
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值