欢迎来到天天文库
浏览记录
ID:25610295
大小:85.00 KB
页数:16页
时间:2018-11-21
《数据结构 链表应用 一元多项式运算.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数据结构链表应用一元多项式运算院系:信息工程学院组号:2组员:田志泽、孙伟伟、程蜜蜜张剑、贾明、王忠愿班级:10计科3班B组日期:20120322计算机科学与技术一元多项式运算功能具体实现部分#include#include"K:应用数据结构DataStructSimpleLinkList.h"//需将线性链表SimpleLinkList包含在内structPolyData//一元多项式的数据部分结构定义{doublecoef;//系数intexpn;//指数PolyData(){coef=0;expn=0;}PolyData(doubl
2、ec,inte){coef=c;expn=e;}};classPolynomial//定义一元多项式类{protected:SimpleLinkListPoly;//将一元多项式定义为线性链表结构public:Polynomial(){};voidADD(Polynomial&p,Polynomial&q);//实现一元多项式的加法运算voidSUB(Polynomial&p,Polynomial&q);//实现一元多项式的减法运算voidMUL(Polynomial&p,Polynomial&q);//实现一元多项式的乘法运算voidoperato
3、r=(Polynomial&cp){Poly=cp.Poly;}//实现一元多项式的复制运算voidSort();//将一元多项式按指数由小到大排列voidUnit();//以Sort()为基础合并多项式中指数相同的项并清除系数为0的项voidShow();//实现多项式的输出显示friendvoidCinhelp();//辅助输入};voidPolynomial::ADD(Polynomial&p,Polynomial&q){Poly.Clear();//将当前多项式的链表请空Poly.ADD(p.Poly,q.Poly);//将得链表直接添加到当前链表中Sort()
4、;//对当前链表进行并项去零操作}voidPolynomial::SUB(Polynomial&p,Polynomial&q){PolyDatae;Polynomialtmp;while(tmp.Poly.length()5、:MUL(Polynomial&p,Polynomial&q){Poly.Clear();//将当前多项式的链表请空inti=1,j;PolyDatae,ei,ej;while(i<=p.Poly.length())//取出p中的每一个元素{p.Poly.GetElem(i,ei);j=1;i++;while(j<=q.Poly.length())//取出q中的每一个元素{q.Poly.GetElem(j,ej);e.coef=ei.coef*ej.coef;//产生的新项的系数为pq两项系数相乘e.expn=ei.expn+ej.expn;//产生的新项的指数为pq两6、项指数相加Poly.SetElem(e);//将产生的新项存入当前多项式的链表中j++;}}}voidPolynomial::Sort(){inti=1,j;PolyDataei,ej;while(i<=Poly.length()-1)//取出当前多项式链表中的每一个元素{Poly.GetElem(i,ei);j=i+1;while(j<=Poly.length())//与当前元素之后的每一个元素今次那个比较{Poly.GetElem(j,ej);if(ei.expn>ej.expn)//若当前元素的指数大于其后的某一个元素时{//交换两个元素Poly.ReSetEle7、m(i,ej);Poly.ReSetElem(j,ei);ei=ej;//对应的两项交换后,将i项当前值更新}j++;}i++;}}voidPolynomial::Unit(){inti=1;PolyDataei,ej;Poly.GetElem(i,ei);//获取第一项的数据部分while(i<=Poly.length()-1){Poly.GetElem(i+1,ej);//获取后一项的数据部分if(ei.coef==0){Poly.DelElem(i);ei=ej;}//当第i个元素的系数为0时将该项清除elseif(ej.coef=
5、:MUL(Polynomial&p,Polynomial&q){Poly.Clear();//将当前多项式的链表请空inti=1,j;PolyDatae,ei,ej;while(i<=p.Poly.length())//取出p中的每一个元素{p.Poly.GetElem(i,ei);j=1;i++;while(j<=q.Poly.length())//取出q中的每一个元素{q.Poly.GetElem(j,ej);e.coef=ei.coef*ej.coef;//产生的新项的系数为pq两项系数相乘e.expn=ei.expn+ej.expn;//产生的新项的指数为pq两
6、项指数相加Poly.SetElem(e);//将产生的新项存入当前多项式的链表中j++;}}}voidPolynomial::Sort(){inti=1,j;PolyDataei,ej;while(i<=Poly.length()-1)//取出当前多项式链表中的每一个元素{Poly.GetElem(i,ei);j=i+1;while(j<=Poly.length())//与当前元素之后的每一个元素今次那个比较{Poly.GetElem(j,ej);if(ei.expn>ej.expn)//若当前元素的指数大于其后的某一个元素时{//交换两个元素Poly.ReSetEle
7、m(i,ej);Poly.ReSetElem(j,ei);ei=ej;//对应的两项交换后,将i项当前值更新}j++;}i++;}}voidPolynomial::Unit(){inti=1;PolyDataei,ej;Poly.GetElem(i,ei);//获取第一项的数据部分while(i<=Poly.length()-1){Poly.GetElem(i+1,ej);//获取后一项的数据部分if(ei.coef==0){Poly.DelElem(i);ei=ej;}//当第i个元素的系数为0时将该项清除elseif(ej.coef=
此文档下载收益归作者所有