头文件
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
结构体 类型定义
typedef struct LNode{
float codf;
int expn;
struct LNode *next;
}LNode, *LinkList;
功能
1.创建多项式
/ 创建多项式
void CreatPolyn(LinkList &P, int n){
LinkList s,pre, q;
P = new LNode;
P->next = NULL;
for(int i=1;i<=n;i++){
s = new LNode;
cin>>s->codf>>s->expn;
pre = P;
q = P->next;
while(q && q->expn < s->expn){
pre=q;
q=q->next;
}
s->next=q;
pre->next=s;
}
}
2.多项式求和
void AddPoly(LinkList &Pa,LinkList &Pb){
LinkList p1;
LinkList p2;
LinkList p3;
LinkList r;
p1 = Pa->next;
p2 = Pb->next;
p3 = Pa;
int sum = 0;
while(p1 && p2){
if(p1->expn == p2->expn){
sum = p1->codf+p2->codf;
if(sum != 0){
p1->codf = sum;
p3->next = p1;
p3 = p1;
r = p2;
p1 = p1->next;
p2 = p2->next;
free(r);
}else{
r = p1; p1 = p1->next; free(r);
r = p2; p2 = p2->next;free(r);
}
}else if(p1->expn < p2->expn){
p3->next = p1;
p3 = p1;
p1 = p1->next;
}else{
p3->next = p2;
p3 = p2;
p2 = p2->next;
}
}
p3->next = p1?p1:p2;
delete Pb;
Print(Pa);
}
3.输出多项式
void Print(LinkList &L){
LinkList P;
P = L ->next;
while(P){
printf("%f^%d\n",P->codf,P->expn);
P = P->next;
}
}
4.主函数
int main(){
LinkList p1,p2;
int n1,n2;
printf("请输入p1的项\n");
scanf("%d",&n1);
CreatPolyn(p1,n1);
printf("请输入p2的项\n");
scanf("%d",&n2);
CreatPolyn(p2,n2);
AddPoly(p1,p2);
return 0;
}