教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 高等教育 >

C++一元多项式计算问题-课程设计说明书(3)

来源:网络收集 时间:2026-08-10
导读: 2.5 编码 链表建立的函数,该函数在多项式信息输入时按照指数降序排列建立链表,并在出现同类项时合并。 void Insert(Polyn p,Polyn h) { if(p->coe==0) delete p; //当前结点的coe成员等于0的时候删除当前结点 else

2.5 编码

链表建立的函数,该函数在多项式信息输入时按照指数降序排列建立链表,并在出现同类项时合并。

void Insert(Polyn p,Polyn h) { if(p->coe==0) delete p; //当前结点的coe成员等于0的时候删除当前结点 else{ Polyn q1,q2; q1=h;q2=h->next; while(q2&&p->expexp) //查找插入位置 { q1=q2; q2=q2->next; } if(q2&&p->exp==q2->exp) //将指数相同相合并 { q2->coe+=p->coe; delete p; if(!q2->coe) { q1->next=q2->next; delete q2; } } else//指数为新时将结点插入 { p->next=q2; q1->next=p; } } }

链表信息按照多项式形式输出。 void PrintPolyn(Polyn P){ Polyn q=P->next; int flag=1; //项数计数器 if(!q) { //若多项式为空,输出0 cout<<\ cout<

- 5 -

}

while (q) { if(q->coe>0&&flag!=1) cout<<\系数大于0且不是第一项时就输出+ if(q->coe!=1&&q->coe!=-1) //系数非1或-1的普通情况 { cout<coe; if(q->exp==1) cout<<\当前结点exp为1时 else if(q->exp) cout<<\ } else { if(q->coe==1) 系数为1的特殊情况 { if(!q->exp) cout<<\指数不存在 else if(q->exp==1) cout<<\指数等于一 else cout<<\ } if(q->coe==-1) 系数为-1的特殊情况情况 { if(!q->exp) cout<<\指数不存在 else if(q->exp==1) cout<<\指数等于一 else cout<<\ } } q=q->next; //当前指针指向下一结点 flag++;//项序数自加1 }

cout<

两个多项式的加法。

int compare(Polyn a,Polyn b)//对两个多项式的系数或项数进行比较 { if(a&&b) {//两个多项式都存在 if(!b||a->exp>b->exp) return 1;当b多项式不存在或者a多项式的指数大于b的的时候,返回1 else if(!a||a->expexp) return -1; 当a多项式不存在或者b多项式的指数大于a的的时候,返回-1 else return 0;//其他情况返回0 } else if(!a&&b) return -1; //a多项式已空,但b多项式非空 else return 1; //b多项式已空,但a多项式非空 }

- 6 -

Polyn AddPolyn(Polyn pa,Polyn pb) { Polyn qa=pa->next; Polyn qb=pb->next; Polyn headc,hc,qc; hc=new Polynomial;//建立一个新的结点 hc->next=NULL; headc=hc; while(qa||qb){ qc=new Polynomial;//新建一个结点 switch(compare(qa,qb)){//调用compare函数对两个多项式进行比较 case 1:// a多项式的指数大于b的 { qc->coe=qa->coe; qc->exp=qa->exp; qa=qa->next; break; } case 0://有同类项则合并 { qc->coe=qa->coe+qb->coe; qc->exp=qa->exp; qa=qa->next; qb=qb->next; break; } case -1: a多项式的指数小于b的 { qc->coe=qb->coe; qc->exp=qb->exp; qb=qb->next; break; } } if(qc->coe!=0){ //当相加系数不为0时 qc->next=hc->next; hc->next=qc; hc=qc; } else delete qc; //当相加系数为0时,释放该结点 } return headc; }

- 7 -

两个多项式的减法。两个多项式的减法是建立在加法的的基础上,对要减的多项式的系数求反,接着调用AddPolyn()函数对处理后的多项式相加即两个多项式的相减

Polyn SubtractPolyn(Polyn pa,Polyn pb) { Polyn h=pb; Polyn p=pb->next;//新建一个结点作为pb的后继结点 Polyn pd; while(p)//当结点存在时,对所有coe数据求反 { p->coe*=-1; p=p->next; } pd=AddPolyn(pa,h);//调用加法函数 for(p=h->next;p;p=p->next) //恢复pb的系数 p->coe*=-1; return pd; } …… 此处隐藏:111字,全部文档内容请下载后查看。喜欢就下载吧 ……

C++一元多项式计算问题-课程设计说明书(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/615218.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)