一元稀疏多项式计算器实现(完整实现版,详细源码)讲述.docx

一元稀疏多项式计算器实现(完整实现版,详细源码)讲述.docx

一元稀疏多项式计算器实现(完整实现版,详细源码)讲述

1.5一元稀疏多项式计算器 实习报告 需求分析 1.输入并建立多项式;   2.输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,……,cn,en,其中n是多项式的项数,ci和ei分别是第i项的系数和指数,序列按指数降序排列;    3.多项式a和b相加,建立多项式a+b;  4.多项式a和b相减,建立多项式a—b;    5.多项式a和b相乘,建立多项式a×b;    6.计算多项式在x处的值;  7.求多项式P的导函数P; 8.多项式的输出形式为类数学表达式; 9.做出计算器的仿真界面; 10. 测试数据:    (1) (2x+5x^8-3.1x^11)+(7-5x^8+11x^9)=(-3.1x^11+11x^9+2x+7)  (2) (6x^-3-x+4.4x^2-1.2x^9+1.2x^9)-(-6x^-3+5.4x^2-x^2+7.8x^15 )  =(-7.8x^15-1.2x^9+12x^-3-x);  (3)(1+x+x^2+x^3+x^4+x^5)+(-x^3-x^4)=(1+x+x^2+x^5);  (4)(x+x^3)+(-x-x^3)=0   (5)(x+x^100)+(x^100+x^200)=(x+2x^100+x^200)  (6)(x+x^2+x^3)+0=x+x^2+x^3   (7)互换上述测试数据中的前后两个多项式 概要设计 链表的抽象数据类型定义为: ADT LinkList{ 数据对象:D={ ai | ai∈ElemSet, i=1,2,...,n, n≥0 } 数据关系:R1={ ai-1, ai|ai-1, ai∈D, i=2,...,n } 基本操作: InitList(L) 操作结果:构造一个空的线性表L。 DestroyList(L) 初始条件:线性表L已存在。 操作结果:销毁线性表L。 ClearList(*L) 初始条件:线性表L已存在。 操作结果:将线性表L重置为空表。 LocateElem(L, e, cmp()) 初始条件:线性表L已存在,compare()是元素判定函数。 操作结果:返回L中第1个与e满足关系cmp()的元素的位序。 若这样的元素不存在,则返回值为0。 SetCurElem(p, e) 初始条件:线性表L已存在,且非空。 操作结果:用元数e更新p所指结点中元数的值。 GetCurElem(p) 初始条件:线性表L已存在,且非空。 操作结果:返回p所指结点中数据元数的值。 InsFirst (L, h, s) 初始条件:线性表L已存在,h结点在L中。 操作结果:在L的s所指结点插入在h结点之后,L的长度加1。 DelFirst (L, h, q) 初始条件:线性表L已存在且非空,q结点在L中且不是尾结点 操作结果:删除链表L中的h结点之后的结点q,L的长度减1。 MakeNode(p, e) 操作结果:创建了一个结点p,其data部分为e。 FreeNode(p) 初始条件:结点p存在且非空。 操作结果:释放结点p空间。 Append(LinkList L,Link s) 初始条件:线性表L已存在。 操作结果:s及s以后的结点链接到了原L之后,L的长度增加链上的结点数。 ListEmpty(L) 初始条件:线性表L已存在。 操作结果:若线性链表L为空表,则返回TRUE,否则返回FALSE。 GetHead(L) 初始条件:线性表L已存在。 操作结果:返回线性链表L中头结点的位置。 NextPos(L, p) 初始条件:线性表L已存在。 操作结果:返回p所指结点的直接后继的位置,若没后继,则返回NULL。 int cmp(a, b) 初始条件:存在两个元数。 操作结果:比较a,b的数值,分别返回-1,0,1。 } ADT LinkList 2.一元多项式的抽象数据类型定义为: ADT Polynomial{ 数据对象:D={ ai | ai∈TermSet, i=1,2,...,m, m≥0 TermSet中的每个元素包含

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档