多项式加法:合并有序表与多项式链表操作
【数据结构】单链表应用3

AsMuchAsICould 已于 2023-01-24 11:41:03 修改
于 2022-12-19 23:59:04 首次发布
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
1,多项式加法:与有序表的合并是一样的思路,从a链表头结点开始创建一个新的链表(指向头结点设置一个指针,这个指针是专门用作连结的,比如说单链表应用1里的删除A链表中与B重复的元素里、尾插法里的r、单链表应用2,3,都有设置这样的指针),然后设置两个指针,分别指向两个链表的首元结点。
然后就是依此比较指数.....
typedef struct Pnode{
int coef;
int expn;
struct Pnode *next;
}Pnode,*polynomial;
#include<stdio.h>
void CreatePolyn(polynomial &p,int n);
void AddPolyn(polynomial &pa,polynomial &pb);
int main(){
int n1,n2;
polynomial pa,pb;
Pnode *p;
scanf("%d %d",&n1,&n2);
CreatePolyn(pa,n1);
CreatePolyn(pb,n2);
p=pa->next;
while(p){
printf("%d %d ",p->coef,p->expn);
p=p->next;
}
printf("n");
p=pb->next;
while(p){
printf("%d %d ",p->coef,p->expn);
p=p->next;
}
printf("n");
AddPolyn(pa,pb);
p=pa->next;
while(p){
printf("%d %d ",p->coef,p->expn);
p=p->next;
}
}
void CreatePolyn(polynomial &p,int n){
p=new Pnode;
p->next=NULL;
Pnode *s,*pre,*q;
for(int i=0;i<n;i++){
s=new Pnode;
scanf("%d %d",&s->coef,&s->expn);
pre=p;
q=p->next;
while(q&&q->expn<s->expn){
pre=q;
q=q->next;
}
s->next=q;
pre->next=s;
}
}
void AddPolyn(polynomial &pa,polynomial &pb){
Pnode *p1,*p2,*p3,*r;
p1=pa->next;
p2=pb->next;
p3=pa;
int sum;
while(p1&&p2){
if(p1->expn==p2->expn){
sum=p1->coef+p2->coef;
if(sum!=0){
p1->coef=sum;
p3->next=p1;
p3=p1;
p1=p1->next;
r=p2;
p2=p2->next;
delete r;
}else{
r=p1;p1=p1->next;delete r;
r=p2;p2=p2->next;delete r;
}
}else if(p1->expn<p2->expn){
p3->next=p1;
p3=p1;
p1=p1->next;
}else if(p1->expn>p2->expn){
p3->next=p2;
p3=p2;
p2=p2->next;
}
}
p3->next=p1?p1:p2;
delete pb;
}

相关知识
多项式加法:合并有序表与多项式链表操作
a+b=1是多项式吗
已知多项式A=3x的平方
罩杯多少a到b a+b=1是多项式吗
要使多项式4x²3mx9成为一个完全平方式,则m=多少 爱问知识人
f(x)=x^9+x^8+x^7+x^6+x^5+x^4+x^3+x^2+x+1在有理数域、实数域上的不可约多项式乘积
基本数学问题
链表实战之宠物商店
【免费】书剑宠物疫苗接种管理软件(宠物诊所疫苗接种登记及批量短信电话提醒软件)资源
递归方程T(n)=aT(n/b)+f(n)之通用解法
原文链接: 多项式加法:合并有序表与多项式链表操作 https://www.mcbbbk.com/newsview818973.html
| 上一篇: 邢台恒宠宠物用品有限公司 | 下一篇: 《妄想山海》平民最强宠物推荐 平... |





