欢迎来到天天文库
浏览记录
ID:41304288
大小:152.00 KB
页数:11页
时间:2019-08-21
《数据处理(上)》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、滨江学院《数据结构》课程设计题目一元稀疏多项式计算器学号20102346043学生姓名冯浩亮院系滨江学院计算机系专业网络工程指导教师宣文霞二O一二年五月二十日一、需求分析1、输入并建立多项式2、输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……cn,en,其中n是多项式的项数,ci,ei分别为第i项的系数和指数。序列按指数降序排列。3、多项式a和b相加,建立多项式a+b。4、多项式a和b相减,建立多项式a-b。5、用带表头结点的单链表存储多项式。二、概要设计1、输入多项式,建立多项式链表首先创建带头结点的单链表;然后按照指数递减的顺序和一定
2、的输入格式输入各个系数不为0的子项:“系数、指数对”,每输入一个子项就建立一个结点,并将其插入到多项式链表的表尾,如此重复,直至遇到输入结束标志的时候停止,最后生成按指数递减有序的链表。2、主要算法设计typedefstructNode{floatcoef;intindex;structNode*next;}LinkList;本程序涉及到多项式的建立、多项式的输出、两个多项式的相加减。用带头结点的单链表存储多项式;程序中共定义了5个函数:voidInsert(LinkList*p,LinkList*h)//把节点p插入到链表h中LinkList*Cre
3、at_L(LinkList*head,intm)//创建一个链表,项数为mvoidPrintf(LinkList*L)LinkList*ADDlist(LinkList*head,LinkList*pb)LinkList*MinusList(LinkList*head,LinkList*pb)三、详细设计1、数据类型定义可描述如下:typedefstructpnode{floatcoef;/*系数域*/intexp;/*指数域*/structpnode*next;/*指针域,指向下一个系数不为的子项*/}PolyNode,*PolyLink;PolyL
4、inkA,B,C;/*单链表存储的多项式A、B、C*/2、输入多项式,建立多项式链表首先创建带头结点的单链表;然后按照指数递增的顺序和一定的输入格式输入各个系数不为0的子项:“系数、指数对”,必须按照升序输入,每输入一个子项就建立一个结点,并将其插入到多项式链表的表尾,如此重复,直至遇到输入结束标志的时候停止,最后生成按指数递增有序的链表。PolyNode*createList(PolyNode*p)//建立多项式链表{floatm;intn;p=newPolyNode;//申请空间PolyNode*newNode;PolyNode*preNode=p
5、;if(p==NULL){cout<<"内存分配失败!"<next=NULL;cin>>m>>n;while(m!=0
6、
7、n!=0){if(m!=0){newNode=newPolyNode;//为新结点申请内存if(newNode==NULL){cout<<"内存分配失败!"<coef=m;newNode->exp=n;preNode->next=newNode;preNode=newNode;}cin>>m>>n;}newNode->next=NUL
8、L;}returnp;测试数据:(1)(2x+5x8-3.1x11)+(7-5x8+11x9)(2)(6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15)(3)(1+x+x2+x3+x4+x5)+(-x3-x4)(4)(x+x2+x3)+0(5)(x+x3)-(-x-x-3)(6)(x+x2+x3)+0四、程序源代码#include#include#include#includetypedefstructNode{floatcoef;intin
9、dex;structNode*next;}LinkList;voidInsert(LinkList*p,LinkList*h)//把节点p插入到链表h中{LinkList*q1,*q2;intflag=0;q1=h;if(p->coef==0)free(p);else{if(q1->next==NULL){q1->next=p;}else{q2=q1->next;while(flag==0){if(p->indexindex){if(q2->next==NULL){q2->next=p;flag=1;}else{q1=q2;q2=q2->ne
10、xt;}}elseif(p->index>q2->index){p->next=q2;q1->
此文档下载收益归作者所有