数据结构——一元多项式的表示及相加
2017-02-27 14:50
453 查看
本文所有代码均为伪码,仅阐述算法基本思想——《数据结构》清华大学出版社
一元多项式的表示采用链式存储结构来实现,基本操作和链表的合并类似。以下为算法部分:
一元多项式的表示采用链式存储结构来实现,基本操作和链表的合并类似。以下为算法部分:
typedef struct{//项的表示,多项式的项作为LinkList的数据元素 float coef;//系数 int expn;//指数 }term,ElemType;//两个类型名:term用于本ADT,ElemType为LinkList的数据对象名 type LinkList polynomial;//用带表头结点的有序链表表示多项式 void CreatPolyn(polynomail &P, int m); //输入m项的系数和指数,建立表示一元多项式的有序链表P void DestroyPolyn(polynomail &p); //销毁一元多项式P void PrintPolyn(polynomail P); //打印输出一元多项式P void PolynLength(polynomail P); //返回一元多项式P中的项数 void AddPolyn(polynomail &Pa, polynomail &Pb); //完成多项式相加运算,即:Pa=Pa+Pb,并销毁一元多项式Pb void SubtractPolyn(polynomail &Pa,polynomail &Pb); //完成一元多项式的相减运算,即:Pa=Pa-Pb,并销毁一元多项式Pb void MultiplyPolyn(polynomail &Pa,polynomail &Pb); //完成一元多项式的相乘运算,即:Pa=Pa*Pb,并销毁一元多项式Pb int cmp(term a,term b); //依a的指数值<(或=)(或>)b的指数值,分别返回-1、0、+1 //基本操作的算法描述(部分) void CreatPolyn(polynmail &P, int m){ InitList(P);//构造一个空的线性链表P h=GetHead(P);//获取P的头结点 e.coef=0.0;e.expn=-1;SetCurElem(h,e);//设置头结点的数据元素 for(i=1;i<=m;++i){ scanf(e.coef,e.expn); if(!LocateElem(P,e,q,(*cmp)())){//当前链表中不存在该指数项 if(MakeNode(s,e)) InsFirst(q,s);//生成结点并插入链表 } } } void AddPolyn(polynomail &Pa,Polynomail &Pb){ ha=GetHead(Pa); hb=GetHead(Pb);//ha和hb分别指向Pa和Pb的头结点 qa=NextPos(Pa,ha); qb=NextPos(Pb,hb);//qa和qb分别指向Pa和Pb中的当前结点 while(qa && qb){//qa和qb均非空 a=GetCurElem(qa); b=GetCurElem(qb);//a和b为两表中当前比较元素 switch(*cmp(a,b)){ case -1://多项式Pa中的当前结点的指数小 ha=qa; qa=NextPos(Pa,qa); break; case 0://两者指数值相等 sum=a.coef+b.coef; if(sum!=0.0){//修改多项式Pa中的当前结点的系数值 SetCurElem(qa,sum); ha=qa; }else{//删除多项式Pa中的当前结点 DelFirst(ha,qa); FreeNode(qa); } DelFirst(hb,qb);FreeNode(qb);qb=NextPos(Pb,hb); qa=NextPos(Pa,ha);break; case 1://多项式Pb中的当前结点的指数值小 DelFirst(hb,qb); InsFirst(ha,qb); qb = NextPos(Pb,hb); ha=NextPos(Pa,ha); break; } } if(!ListEmpty(Pb)) Append(Pa,qb);//链接Pb中的剩余结点 FreeNode(hb);//释放Pb的头结点 }
相关文章推荐
- 数据结构(11)线性表之一元多项式表示及相加
- 数据结构——链表—一元多项式的表示及相加
- 算法:一元多项式的表示及相加(链表实现)-数据结构(4)
- 数据结构实验之一元多项式相加
- 数据结构课程设计一元多项式的相加和相乘
- 数据结构 一元多项式相加
- 【无浪】一元多项式的表示及相加
- 数据结构(Data structure):用链表实现多项式的表示和运算(C语言)
- 数据结构课程设计:顺序结构、动态链表结构下的一元多项式的加法、减法、乘法的实现
- 数据结构 一元多项式的表示及相加
- 一元多项式的表示及相加(抽象数据类型Polynomial的实现)
- 一元多项式表示和相加
- 一元多项式的表示及相加(抽象数据类型Polynomial的实现)
- Polynomial 一元多项式的表示及相加 (线性链表实现 严蔚敏版)
- Polynomial 一元多项式的表示及相加 (线性链表实现 严蔚敏版)
- 第二章(6).一元多项式的表示及相加
- 数据结构——多项式相加
- 2007.08.25一元多项式的表示及相加
- 一元多项式表示相加操作
- 一元多项式表示和相加