当前位置:首页 > 多项式加法实验报告
out<<*m;} //然后输出该项 else if(m->coef<0) //如果系数小于0
out<<*m; //直接输出该项 }
cout< void Polynominal::PolyAdd(Polynominal &r) { //将多项式r加到多项式this上 Term *q,*q1=theList,*p; //q1指向表头节点 p=r.theList->link; //p指向第一个要处理的节点 q=q1->link; //q1是q的前驱,p和Q就是指向当前要进行比较的项 while(p->exp>=0) // 对r的单循环链表进行遍历, 直到全部节点处理完毕 { while(p->exp if(p->exp==q->exp) { //当指数相等时相加 q->coef=q->coef+p->coef; if (q->coef==0) { //若相加后系数为0,则删除p q1->link=q->link; delete (q); q=q1->link; // 重置q指针 } else { q1=q; q=q->link; //若相加后系数不为0,则移动q1和q } } else q1=q1->InsertAfter(p->coef,p->exp); //p->exp>1->exp的情况 p=p->link; // 以p的系数和指数生成新节点,插入q1后 } } ostream & operator <<(ostream &out,const Polynominal&x) { x.Output(out); return out; } istream & operator >>(istream &in,Polynominal &x) { x.AddTerms(in); return in; } Polynominal & operator +(Polynominal &a, Polynominal &b) { a.PolyAdd(b); return a; } int main( ) //主函数 { Polynominal p,q,q1; cin>>p,cout< >q,cout< 7 三、 测试数据和结果分析 第一组: 第二组 第三组: 输入: 输入: 输入: 9 5 1 2 3 14 4 3 -1 1 -8 8 -2 2 0 -1 6 2 6 0 -1 2 2 0 0 -1 1 1 0 -1 10 9 0 -1 2 10 -3 3 4 8 2 2 -6 2 0 -1 0 -1 输出: 9X^5+4X^3-2X^2+6 X^2-X 3X^14-8X^8+6X^2+2 10X^9-3X^3+2X^2 -X^2+X 2X^10+4X^8-6X^2 10X^9+9X^5+X^3+6 0 3X^14+ 2X^10+4X^8+2 四、 总结 输出:输出: 8
共分享92篇相关文档