一、问题分析和任务定义
课程设计的题目是一元多项式计算,即实现两个一元多项式之间的运算,并输出运算
的结果。
1.问题分析
(1) 输入的形式和输入值的范围:
输入是从键盘输入的,输入的内容为多项式的系数和指数,系数为任意整数,指数为大
于等于 0 的整数
(2) 输出的形式
从屏幕输出,显示用户输入的多项式,并显示多项式加、减以后的多项式的值。
(3)存储结构
在这次设计中开始我是采用顺序存储结构,使得多项式相加的算法定义十分简洁。至
此,一元多项式的表示及相加问题似乎已经解决了。然而,在通常的应用中,多项式的次
数可能很高且变化很大,使得顺序存储结构的最大长度很难确定。特别是在处理形如
的多项式时,就要用一个长度为 20 001 的线性表来表示,表中仅有 3 个非零元素,这种
对内存空间的浪费是应当避免的,但是如果只存储非零系数项则显示必须同时存储相应的
指数。
一般情况下的一元 n 次多项式可写成
其中, 是指数为 的项的非零系数,且满足
若用一个长度为 m 且每个元素有两个数据项(系数项和指数项)的线性表
便可惟一确定多项式 。在最坏情况下,n+1(=m)个系数都不为零,则经只存储每项
系数的方案要多存储一倍的数据。但是,对于 S(x)类的多项式,这种表示将大大节省空间。
2、任务定义
a: 输入并建立多项式;
b: 输出多项式,输出形式为整数序列:n,c
1
,e
1
,c
2
,e
2
,……,c
n
,e
n
,其中 n 是多项式的项数
c
i
和 e
i
分别是第 i 项的系数和指数,序列按指数降序排列;
c: 多项式 a 和 b 相加,建立多项式 a+b;
d: 多项式 a 和 b 相减,建立多项式 a-b。
e: 多项式的输出形式为类数学表达式。
系数值为 1 的非零项的输出形式中略系数 1。而-1x 的输出形式为-x。
二、数据结构的选择和概要设计:
本题设计要求能够按照指数降序排列建立并输出多项式;能够完成两个多项式的相加,
相减,并将结果输入。
(1) 数据结构的选用
A:基于链表中的节点可以动态生成的特点,以及链表可以灵活的添加或删除节点
的数据结构,为了实现任意多项式的加法,减法,因此选择单链表的结构体,它有