欢迎来到天天文库
浏览记录
ID:51537502
大小:6.19 MB
页数:14页
时间:2020-03-22
《用广义表实现m元多项式.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、用广义表实现m元多项式第十二组主讲:何蔚4、m元多项式的表示和运算[问题描述] 设计并实现m元多项式的表示和运算。具体功能如下:(1) 输入功能:输入一个m元多项式并存储(2) 计算功能:对任意输入的一组m元值,计算m元多项式的值(3) 加法功能:两个m元多项式的加法运算(4) 求导功能:实现m元多项式中对指定变元的一阶导数的运算(5) 显示功能:按常规显示m元多项式[基本要求] 利用广义表实现m元多项式的表示,提供一个简易菜单方便对各种功能的调用。enumtriple{var,ptr,num};/*var:表头结点,ptr:系数是子链表,num:系数是实数*///多项式
2、结点类定义classpolynode{polynode*tlink;//同一层下一结点指针intexp;//指数/*标志,是var时为表头结点,是ptr时为子表结点,是num时为原子结点*/tripletag;union{//联合charvble;//表头结点中存放该链表基于的变元名polynode*hlink;//子表结点中存放指向系数子链表的指针intcoef;//原子结点中存放实数型系数};};tag=var/ptr/numnodename=vble/hlink/coefexptlink输入输出计算加法广义表表示多项式P(x,y,z)=x10y3z2+2x8y3z2+
3、3x8y2z2+x4y4z+6x3y4z+2yz=((x10+2x8)y3+3x8y2)z2+((x4+6x3)y4+2y)zA(x,y)=Cy3+Dy2C=x10+2x8D=3x8B(x,y)=Ey4+FyE=x4+6x3F=2P=((A,2),(B,1))A=((C,3),(D,2))B=((E,4),(2,1))C=((1,10),(2,8))D=((3,8))E=((1,4),(6,3))P(x,y,z)=((x10+2x8)y3+3x8y2)z2+((x4+6x3)y4+2y)z的链表表示,由于tag在该链表中是很明了的,因此在图中省略了tag域,这样该链表表示更
4、清晰。voidPolyList::Input(void)//操作结果:输入广义表{charzm;ClearHelp(head);head=newPolyNode(VAR);//生成广义表头结点cout<<"请输入变元字母:";cin>>zm;head->vble=zm;CreateHelp(head->tLink);//创建以head->tLink为表头的广义表}voidPolyList::CreateHelp(PolyNode*&first)//操作结果:创建以first为头结点的广义表{charch,zm;intzs,xh;cout<<"系数是否为数字?(1.是2.否3
5、.输入结束):";cin>>ch;//读入字符switch(ch){case'3'://广义表建立完毕return;case'2'://子表default://原子//表头为原子cout<<"输入系数与指数:";cin>>xh;cin>>zs;first=newPolyNode(NUM);//生成原表结点first->coef=xh;//原子结点数据first->exp=zs;CreateHelp(first->tLink);//建立广义表下一结点break;}}case'2'://子表//表头为子表first=newPolyNode(PTR);//生成表结点cout<<"
6、输入指数:";cin>>zs;first->exp=zs;PolyNode*subHead;//子表指针subHead=newPolyNode(VAR);//生成子表的头结点//引用数为1first->hLink=subHead;cout<<"请输入变元字母:";cin>>zm;subHead->vble=zm;//subHead为子表CreateHelp(subHead->tLink);//递归建立子表CreateHelp(first->tLink);//建立广义表下一结点break;加法voidPolyList::add(PolyNode*hd){boolfrist=t
7、rue;cout<<"(";//广义表以(开始for(PolyNode*p=hd->tLink;p!=NULL;p=p->tLink){//依次处理多项式表各元素PolyNode*q=head->tLink;if(frist)frist=false;//第一个元素elseif(p->coef>0)cout<<"+";if(p->tag==NUM)cout<coef+q->coef<vble<<"^"<exp;else//表结点{add(p->hLink);cout<vble<<"
此文档下载收益归作者所有