c++多项式加法 链表

来源:百度知道 编辑:UC知道 时间:2024/06/24 15:13:52
用链表实现一元多项式加法!!!!
设一元多项式的一个项可以用整数数组的2个元素来表示:指数ne, 系数nf (带符号的整数)。我们可以利用数组来表示一个一元多项式。例如多项式:
3X9-6X4+2X+7 可表示(指数和系数均为0表示结束) //(请建立一个struct,包含ne 和 nf,还有必要的指针,不要用class!!!)
9 3 4 -6 1 2 0 7 0 0 …
设每个一元多项式项数都不会超过十项。编出程序实现以下功能:
(1) 在键盘上输入指数ne和系数nf,分别生成两个一元多项式HA和HB;
(2) 输出一元多项式HA和HB;
(3) 把一元多项式HA和HB相加,生成新的一元多项式HC(HC可能超过十项);
(4) 输出新形成的一元多项式HC(原HA、HB不变);
(5) 询问”Continue?”, 当输入回答字符’n’时结束,否则回第(1)点继续执行。
注意:(1)进行多项式相加时,只有该两项的指数相同时才能相加,若相加后系数为0,则取消该项;
(2) 建立多项式,可以严格按指数从大到小的次序输入,此时,当发现当前项的指数比前一项的指数大时,则要求重新输入;
(3)若建立多项式时可以不按指数由大到小次序输入时,则应在输入结束后用程序进行调整,使数组内多项式各项指数从大到小次序存放;
(4) 在一个多项式中若发现有两项(或两项以上)的指数相等时,应进行合并,或合并后系数为0,则取消该项;
输入输出说明:输入14 2 6 00 //00表示第一个多项式输入结束
52 2 4 00
输出x^4+2x^6
5x^2+2x^4
5x^2+3x^4+2x^6 //第三行为两个多项式的和

//请用尽量少的库函数 和 关键字,复杂了看不懂!
//尽量加点注释 谢谢
zzh1989829@qq.com
上图的同学 不是链表啊?

#include<iostream>
using namespace std;

struct Multi
{
long nf;
int ne;
Multi *next;
}**add,*sum;

void input()
{
add=new Multi*[2];
for(int n=0;n!=2;n++)add[n]=new Multi[11];

for(int i=0;i!=2;i++)
for(int a=1;;a++)
{
cin>>add[i][a].nf>>add[i][a].ne;add[i][a].next=&add[i][a+1];
if(add[i][a].nf==0 && add[i][a].ne==0)
{
if(a==1){add[i][a].next=NULL;break;}
add[i][a-1].next=NULL;break;
}
else if(a==10)
{
add[i][a].next=NULL;break;
}
}
add[0][0].next=&add[0][1];
add[1][0].next=&add[1][1];
}

void prt(Multi *headp)
{
bool fir=0;
while(headp->next!=NULL)
{
headp=headp->next;
if(headp->nf==0);
else if(headp->nf<0 || fir==0){cout<<headp->nf<<"x"<<"^"&