线性表基本操作及其应用
一、内容用C或C++语言设计并实现一个一元稀疏多项式的简单计算器。
一个稀疏多项式简单计算器的基本功能是:
1. 输入并建立多项式。
2. 输入多项式,序列按指数降序排列。
3. 多项式A(x)和B(x)相加,并建立多项式A(x)+B(x)。
4. 多项式A(x)和B(x)相减,并建立多项式A(x)-B(x)。
5. 给定x的值,计算多项式。
二、算法和方法
(1)首先建立一个结构体,接受系数和指数,还有后一项的地址。用malloc开辟动态内存空间,来保存输入的系数和指数。用这种方法建立两个链表,存两个多项式。
(2)建立一个排序函数,用冒泡法排序链表,按指数由从大到小的程序排列。再建立一个输出函数,分别将排列好的链表输出。
(3)重新建立一个链表,用来保存加法的多项式。加法实现方法:判断指数的大小,指数大的项放在加法链表的前面,指数小的项放在加法链表的后面。要是有指数相当的项,则先系数相加,然后按指数大小的顺序放入加法链表中,最后若某一个多项式中有剩余的项,则全放在加法链表的末尾,然后用前面的输出函数,将加法链表输出。
(4)再建立一个链表用来保存减法结果。用第一个多项式减第二个多项式,从指数大的开始,跟加法链表的方法基本一样,无非是第一个多项式中某一指数在第二个多项式中没有的话,就直接插入减法链表中,第二个多项式中某一指数在第一个多项式中没有的话,先将这一项的系数取相反数,再按指数大小插入减法链表中。指数相同的则要用第一个多项式的系数减去第二个多项式的系数,然后插入减法链表中。最后用输出函数将减法链表输出。
(5)用头文件math.h中的pow命令,来计算次幂问题,用系数乘以给定值的n次幂,最后输出结果。
(6)最后用free函数将所有的链表结点都释放掉。
三、要求
程序设计要求:
输入例子:
第一个多项式A(x)输入:2x^2+3x^6-8x^5
程序运行时输入:2 2
3 6
8 5
0 0 作为输入项结束
第二个多项式B(x)输入:1x^2+3x^3+2x^5+5x^4
程序运行时输入:1 2
3 3
2 5
5 4
0 0 作为输入项结束
多项式的遍历结果输出格式为:
A(x)= 3X^6-8X^5+2X^2
B(x)= 2X^5+5X^4+3X^3+1X^2
A(x)+B(x)= 3X^6-6X^5+5X^4+3X^3+3X^2
A(x)-B(x)= 3X^6-10X^5-5X^4-3X^3+1X^2
当输入x的值为:2
程序输出结果为:
A(2)+B(2)=116
A(2)-B(2)=-228