数据结构课程设计-多元多项式的操作

上传人:ni****g 文档编号:500281267 上传时间:2023-04-04 格式:DOCX 页数:5 大小:15.86KB
返回 下载 相关 举报
数据结构课程设计-多元多项式的操作_第1页
第1页 / 共5页
数据结构课程设计-多元多项式的操作_第2页
第2页 / 共5页
数据结构课程设计-多元多项式的操作_第3页
第3页 / 共5页
数据结构课程设计-多元多项式的操作_第4页
第4页 / 共5页
数据结构课程设计-多元多项式的操作_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《数据结构课程设计-多元多项式的操作》由会员分享,可在线阅读,更多相关《数据结构课程设计-多元多项式的操作(5页珍藏版)》请在金锄头文库上搜索。

1、数据结构课程设计姓名:杨文杰班级:2013130301专业:计算机科学与技术学号:201313030123实验报告5.31. 实验题目:多元多项式的操作。2. 问题描述:(1)实现多元多项式的求函数值、求偏导函数和加法运算。(2)稀疏多元多项式采用广义表存储;(3)输入要求:输入多元多项式的变元个数,各项按(系数,指数)对输入,可按任意顺序输入各项,相同指数项可以多次输入,由程序合并同类项,以(0,0,0)结束输入,建立该多项式的广义表存储结构;例如:输入为3/变元个数为33 2 1 3/3x2yz3 -4 1 0 5/-4xz52 2 0 3 /2 xyz30 0 0 0(4)输出要求:按多

2、项式的形式输出,如上面输入的多项式输出为:(2x+3x2)yz3-4xz5;(5)求多元多项式的函数值:从键盘输入各个变元的当前值;(6)求多元多项式的偏导函数,仍然采用广义表存储,并输出;(7)多元多项式的加、减、乘法运算。3.概要设计(1)存储结构的选择:由于是多元稀疏多项式的基本运算,用顺序表存储浪费存储空间,故采用广义表表示稀疏多项式。用广义表存储多元多项式P(x1,x2,.,xn),实为按变元xn的升幂顺序建立一个带头结点的有序链表,链表中的每个节点结构有两种:(1,exp,hp,tp),其中1表示表结点,即xn的系数是一个多项式,hp指向其系数多项式的链表(也是一个与xn的有序表同

3、构的链表),tp指向xn的下一幂次项的结点;(0,coef,exp,tp),0表示原子结点,即xn的exp幂次项的系数是常数。(2)多项式的结点抽象数据类型:ADT PNode数据对象:D=ai|aiTermSet,i=1,2,3,n,n0,TermSet中的每个元素是多项式的一项(系数,指数)数据关系:R=|ai-1,aiD,i=2,3,4,n,且ai-1的指数小于ai 的指数,即按指数递增 基本操作:PNode(P);构造一个节点P。PNode(const PNode &pa);通过Pa构造节点P。PNode & operator=(const PNode &pa);运算符重载ClearN

4、ode();清除节点P 实现多项式的乘法:La*=Lb,并将Lb置空。ADT PNode;(3)存放系数指数对的结构体定义:struct Termdouble coef;系数。int expnMAXVAR+1;指数。struct Term;(4)多元多项式的广义表的ADT定义:ADT PList 数据对象:D=ai|i=2,3,n,n0;aiD0 或者属于某个广义表,D0是某个数据对象 数据关系:R=|ai-1,aiD,i=2,3,4,n 基本操作:InitPList(&LS);建立空的广义表LS。GreatePList(&LS);建立广义表LS。DestroyPList(&LS);销毁广义表

5、LS。CopyPList(&LS,L);由广义表L复制到广义表LS。PListEmpty(LS);判断广义表LS是否是空表。GetHead(LS);取广义表LS的表头。InsertInOrder(PNode * &p,PNode *pb);将pb头结点后各项插入到p中使P仍递增有序并合并同类项。PList &operator =(const PList &L);重载辅赋值运算符。PList &operator +=(PList &L);重载复合赋值运算符。PList &operator -=(PList &Lb);重载复合赋值运算符:La-=Lb。PList &operator *=(doub

6、le a);重载复合赋值运算符:La*=Lb。void Derivative();求偏导函数。void Display(PNode *p)const;输出多项式。double Value(PNode *p,double *value);求多项式在x处的值 ADT GList4 详细设计(1)广义表结点类:class PNode/多项式的广义表结点类friend class PList;/将广义表类说明为友元类public:int tag;/标志域,原子结点tag=0,表结点tag=1intexp;/指数域PNode *tp;/指向相同层的下一个链接点uniondouble coef;/原子结点

7、使用coef域存放字符PNode *hp;/表结点使用hp指针指向下层单链表的第一个结点PNode():tag(1),tp(NULL),hp(NULL);/构造函数PNode(const PNode &pa);PNode(int t,int ex):tag(t),exp(ex),tp(NULL),hp(NULL);PNode & operator=(const PNode &pa);/运算符重载void ClearNode();(2)广义表类class PList/多元多项式的广义表类friend PList & operator +(PList &La,PList &Lb);/重载加法运算f

8、riend PList & operator -(PList &La,PList &Lb);/重载减法运算friend PList & operator *(PList &La,double a);/重载乘法运算private:PNode *head;/表头指针void CreateTerm(PNode * &h,Term x,int n);/根据x创建不带头结点的广义表void InsertInOrder(PNode * &p,PNode *pb);/pb头结点后各项有序插入到p中void CopyPList(PNode *L,PNode * &T);/由广义表L复制得到T递归函数publi

9、c:PList(int x=0)head=new PNode;head-tag=1;head-exp=x;/构造函数PList(const PList &L)head=L.head;/拷贝构造函数PList &operator =(const PList &L);PList &operator +=(PList &L);/重载复合赋值运算符PList &operator -=(PList &Lb);/重载复合赋值运算符:La-=LbPList &operator *=(double a);/重载复合赋值运算符:La*=Lbvoid MUL(PNode *p,double a);double Value(PNode *p,double *value);void Derivative();/求偏导函数void Display(PNode *p)const;/输出多项式PNode *Head()return head;void CreatePList();bool IsEmpty()return !head-hp;5.调试分析

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号