设有一元多项式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 att

本文介绍了一元多项式加减乘法的编程实现,使用链表和指针来描述多项式,并详细讲解了如何进行升降幂排序。在排序过程中,通过比较结点的指数来决定结点的相对位置,实现降幂排列。同时,文章讨论了LocateElem函数中参数传递的原理,解释了为何需要传递引用以更新外部变量的值。
最低0.47元/天 解锁文章
5815

被折叠的 条评论
为什么被折叠?



