多项式的表示、读入、运算与输出

如何表示非零项高次数的多项式?多项式之间读入,输出,运算,怎么操作?首先看程序的构建,我们要设计以下几个函数:

1、读入多项式。

2、对多项式的每一项进行排列。

3、多项式的运算。

4、多项式输出。

读入多项式前,先来看多项式的表示,多项式的表示方法可以用数组和链表,数组的方式编写代码较简单,不过需要事先确定好数组的大小。而链表方式比较灵活,不需要实现确定大小,数据读进来一个就存储,这里讲如何用链表的方式实现:

首先看表示多项式每一项的数据结构:

每个多项式中都有指数,系数,结构中还要有一个结构指针作为串联。

接着到读入多项式,我们按照这个思路:

1、首先输入一个数N,表示这个多项式一共有多少项。

2、接下来是一对一对的输入每一项的系数和指数。


一开始定义了一些变量,其中HeadRear两个结构指针分别指向链表的头和尾。第24行首先读入一个数N表示多项式项数,接着按照这个N,来做循环读入每一项的数据,每读入一项数据就用Attach函数把它们链接起来。

注意这里,因为我们的多项式按指数递减的方式排列,所以读入数据时这里我们是按照指数从小到大的顺序录入,这样先录入的结点指数最小,会被排在最后,先录入的结点指数大,排在最前,按照从左到右按指数递减的顺序排列。

所以Attach链接函数:

就是跟链表读入数据一样的操作了,每读入一个数据就申请一块结构空间来存放,第一次让Head等于第一个结点,接下去读入新结点时,让新结点指向Head,再把新结点赋给Head就可以了。

链接好多项式后,接下来到多项式的运算,首先我们来看多项式相加:



为了不破坏两个原式,我们可以定义两个t1t2来代替P1P2。然后定义一个P来链接相加后的新的多项式,用HeadRear分别指向链表的头和尾,这样就可以进行接下来的操作把t1t2相加后得到的新的项插入到新链表中。

接下来要做的就是每一项相加了,相加要判断两个项的指数(第61行),当两项的指数相等时,就做系数相加。相加后还要判断系数是否等于0,如果等于0就不用插入到新链表中了。

如果两项指数不相等,就要做两个判断,t1指数大就把t1接下去,t2指数大就把t2接下去(第75-93行)。

还有特殊情况就是两个多项式项数不相等,当其中一个多项式的项数操作完后,另一个多项式里还有项,就要把剩下的项全部接到链表的后面去,所以程序(第95-110行),把t1(或t2)剩下的项接入,让t1(或t2)的等于link,一直遍历到最后等于NULL,就接完了。

最后就是把相加完后的多项式输出:

要先判断链表是否为空,是的话就不用输出了。然后定义一个变量flag,为了美观,我们输出多项式时是输出一组系数和指数后接着一个空格,一开始和最后不用输空格,所以一开始让flag=0;然后不输出空格,flag=1,接着输出空格,这样就能做到在开头和末尾不输出空格了。

猜你喜欢

转载自blog.csdn.net/justinzengtm/article/details/79872541
今日推荐