数据结构教学规划-一元多项式计算器.doc
《数据结构教学规划-一元多项式计算器.doc》由会员分享,可在线阅读,更多相关《数据结构教学规划-一元多项式计算器.doc(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、,实习1、一元稀疏多项式计算器一、 需求分析1. 问题描述设计一个一元稀疏多项式简单计算器。2. 基本要求 一元稀疏多项式简单计算器的基本功能是:(1)输入并建立多项式。(2)输出多项式,输出形式为整数序列:n, c1, e1, c2, e2, ,cn, en ,其中n是多项式的项数,ci,ei分别是第i项的系数和指数,序列按指数降序排列。(3)多项式a和b想加,建立多项式a+b 。(4)多项式a和b想减,建立多项式a-b 。3. 测试数据 (1) (2x+5x8-3.1x11)+(7-5x8+11x9)=(-3.1x11+11x9+2x+7) (2) (6x-3-x+4.4x2-1.2x9)
2、-(-6x-3+5.4x2-x2+7.8x15)=(-7.8x15-1.2x9+12x-3-x) (3) (1+x+x2+x3+x4+x5)+(-x3-x4)=(1+x+x2+x5) (4) (x+x3)+(-x-x3)=0 (5) (x+x100)+(x100+x200)=(x+2x100+x200) (6) (x+x2+x3)+0=(x+x2+x3) (7) 互换测试数据的前后两个多项式。4. 实现提示 用带表头结点的单链表存储多项式。二、概要设计为实现上述程序功能,应用带头结点的单链表存储多项式。为此需要一个抽象数据类型:一元多项式。1.抽象数据类型一元多项式定义为:ATD Ployno
3、mial 数据对象:D=ai|aiTermset, i=1,2,3,m,m0 Termset中的每个元素包含一个表示系数的实数和表示指数的整数数据关系:R1=ai-1,aiD,且ai-1中的指数ai中的指数的值,i=1,2,3n基本操作:Insert(p,h)初始条件:h已存在。操作结果:插入p项。CreateLinklist(head, m)操作结果:建立一个头指针为head、项数为m的一元多项式。DestroyLinklist( p)初始条件:一元多项式p已存在。操作结果:销毁一元多项式p。PrintLinklist( P)初始条件:一元多项式p已存在。操作结果:输出一元多项式p。Comp
4、are(a,b) 初始条件:项a,b已存在。操作结果:比较a,b中x的指数的大小。 AddLinklist(pa,pb)初始条件:一元多项式pa,pb已存在。操作结果:完成一元多项式pa,pb的相加运算。SubtractionLinklist(Sa,Sb) 初始条件:一元多项式Sa,Sb已存在。操作结果:完成一元多项式Sa,Sb的相减运算。 ATD Ploynomial三、详细设计(源代码)(使用C语言)#include#include#define maxlen 10#define large 999typedef struct Linklistomial float coef; int e
5、xpn; struct Linklistomial *next;Linklistomial,*Linklist;/结点类型,指针类型void Insert(Linklist p,Linklist h)/ h已存在插入p项 if(p-coef=0) free(p);/系数为0的话释放结点 else Linklist q1,q2; q1=h; q2=h-next; while(q2&p-expnexpn) /查找插入位置 q1=q2; q2=q2-next; if(q2&p-expn=q2-expn) /将指数相同相合并 q2-coef+=p-coef; free(p); if(!q2-coef)
6、 /系数为0的话释放结点 q1-next=q2-next; free(q2); else /指数为新时将结点插入 p-next=q2; q1-next=p; Linklist CreateLinklist(Linklist head,int m)/建立一个头指针为head、项数为m的一元多项式 int i; Linklist p; p=head=(Linklist)malloc(sizeof(struct Linklistomial); head-next=NULL; for(i=0;icoef,&p-expn); Insert(p,head); /调用Insert函数插入结点 return
7、head;void DestroyLinklist(Linklist p)/销毁多项式p Linklist D1,D2; D1=p; while(D1) D2=D1-next; free(D1); D1=D2; void PrintLinklist(Linklist P)/输出一元多项式p Linklist q=P-next; int flag=1; /项数计数器 if(!q) /若多项式为空,输出0 putchar(0); printf(n); return; while(q) if(q-coef0&flag!=1) putchar(+); /系数大于0且不是第一项 if(q-coef!=1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 教学 规划 一元 多项式 计算器
限制150内