该课程设计报告主要介绍了如何利用链表来实现一元多项式的加减乘法运算。报告中,学生通过C++编程语言,使用STL中的list模板作为线性表来存储一元多项式的系数和指数对,进而构建了一个多项式类。
需求分析部分指出,程序需要能够接收用户输入的两个一元多项式,例如x^3+2x^2-x+4和-x^3+3x^2-x+45,然后解析这些输入并将其存储在线性表LA和LB中。接下来,程序要支持对这两个多项式的加、减、乘、除运算,并输出格式化的结果。
概要设计部分提供了程序的流程图,流程包括从屏幕输入、多项式解析、存储、运算以及结果显示。在详细设计阶段,学生选择了VC++作为开发工具,并利用C++类来表示多项式及其项。这里有两个关键类:`PolyNode`和`Polynomial`。
`PolyNode`类用于表示多项式的一个项,包含系数(`xishu`)和指数(`zhishu`)两个属性。它还重载了小于(`<`)和大于(`>`)操作符,以便于比较项之间的大小关系,按指数大小进行排序。
`Polynomial`类是核心,它使用`list<PolyNode>`来存储多项式的各项。类中包含了多项式的基本操作,如构造函数(用于初始化和解析字符串),插入项(`insert_item`),相加(`add`)、相减(`sub`)的运算,排序(`sort`),打印(`print`),获取第一项(`getfirst`),删除第一项(`delfirst`),以及获取项数(`getitemnum`)等。此外,还重载了加法(`operator+`)和减法(`operator-`)运算符,以实现多项式的加减操作。乘法操作可能包括乘以另一个多项式(`multiple`)以及乘以一个整数因子(`multiple(int num)`)。
在实现过程中,为了进行加减运算,需要先确保多项式的项按照指数的降序排列。因此,`sort`函数用于对多项式中的项进行排序。在进行加减运算时,相同的指数会进行相应的系数相加或相减,而指数不同时,较大的指数项会保留在结果中。乘法运算则需要更复杂的算法,如Dijkstra的Karatsuba算法或Toom-Cook算法,但此处未提供具体的实现细节。
这个课程设计项目展示了如何使用链表数据结构和面向对象编程技术来解决一元多项式的数学运算问题。通过这种方法,可以高效地处理多项式的操作,且易于扩展以支持更多高级功能。