C++编写一个程序用单链表存储多项式,并实现两个一元多项式A与B相加的函数。A,B刚开始是无序的,A与B之和按降序排列。例如: 多项式A: 1.2X^0 2.5X^1 3.2X^3 -2.5X^5 多项式B: -1.2X^0 2.5X^1 3.2X^3 2.5X^5 5.4X^10 多项式A与B之和:5.4X^10 6.4X^3 5X^1 【输入形式】任意两个多项式A和B 【输出形式】多项式中某一项的系数与指数,系数保留一位小数 【输入样例】 1.2 0 2.5 1 3.2 3 -2.5 5 -1.2 0 2.5 1 3.2 3 2.5 5 5.4 10 2 【输出样例】 6.4 3 【样例说明】 第一个多项式的系数与指数对,以空格隔开 第二个多项式的系数与指数对,以空格隔开 输出第2项的系数与指数,系数与指数间用空格隔开,系数保留一位小数 【评分标准】必须用链表实现
时间: 2024-01-01 17:06:55 浏览: 76
好的,以下是C++代码实现:
```c++
#include<iostream>
using namespace std;
struct node{
double coef;
int exp;
node *next;
};
void create_poly(node *&head,double c,int e){ //创建多项式
if(head==NULL){ //如果头结点为空,直接插入第一个结点
head=new node;
head->coef=c;
head->exp=e;
head->next=NULL;
}
else{
node *p=head,*q=NULL;
while(p!=NULL && p->exp>e){ //按指数降序插入
q=p;
p=p->next;
}
if(p!=NULL && p->exp==e){ //指数相同,系数相加
p->coef+=c;
}
else{
node *tmp=new node;
tmp->coef=c;
tmp->exp=e;
tmp->next=p;
if(q==NULL){ //插入头结点之前
head=tmp;
}
else{
q->next=tmp;
}
}
}
}
node* add_poly(node *p,node *q){ //多项式相加
node *res=NULL;
while(p!=NULL && q!=NULL){
if(p->exp > q->exp){
create_poly(res,p->coef,p->exp);
p=p->next;
}
else if(p->exp < q->exp){
create_poly(res,q->coef,q->exp);
q=q->next;
}
else{
create_poly(res,p->coef+q->coef,p->exp);
p=p->next;
q=q->next;
}
}
while(p!=NULL){ //将剩余结点插入结果链表中
create_poly(res,p->coef,p->exp);
p=p->next;
}
while(q!=NULL){
create_poly(res,q->coef,q->exp);
q=q->next;
}
return res;
}
void print_poly(node *head,int n){ //输出结果
node *p=head;
for(int i=0;i<n;i++){
p=p->next;
}
printf("%.1lf %d",p->coef,p->exp);
}
int main(){
node *A=NULL,*B=NULL,*C=NULL; //分别为多项式A、B、结果C的头结点
int n,m;
double c;
cin>>c>>n;
while(n!=-1){
create_poly(A,c,n);
cin>>c>>n;
}
cin>>c>>m;
while(m!=-1){
create_poly(B,c,m);
cin>>c>>m;
}
C=add_poly(A,B); //调用多项式相加函数
int len=0;
node *p=C;
while(p!=NULL){ //计算结果链表的长度
len++;
p=p->next;
}
print_poly(C,len-2); //输出第二项的系数与指数
return 0;
}
```
输入格式为:先输入多项式A的系数和指数对,以空格隔开,以-1 -1作为结束符,再输入多项式B的系数和指数对,以空格隔开,以-1 -1作为结束符,最后输入2,表示输出第二项的系数与指数。
输出格式为:输出第二项的系数和指数对,以空格隔开,系数保留一位小数。
需要注意的是,在创建多项式时,要按指数降序插入,以便后续的多项式相加操作。在多项式相加时,要分别遍历两个多项式的链表,并将系数相加,最后将剩余结点插入结果链表中。最后输出结果链表中第二项的系数和指数对即可。
阅读全文