两个以单链表作存储结构的一元多项式A和B,编写算法将多项式A和B相加,要求利用原表的结点空间和多项式.
来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/07/06 01:18:22
两个以单链表作存储结构的一元多项式A和B,编写算法将多项式A和B相加,要求利用原表的结点空间和多项式.
![两个以单链表作存储结构的一元多项式A和B,编写算法将多项式A和B相加,要求利用原表的结点空间和多项式.](/uploads/image/z/5785288-16-8.jpg?t=%E4%B8%A4%E4%B8%AA%E4%BB%A5%E5%8D%95%E9%93%BE%E8%A1%A8%E4%BD%9C%E5%AD%98%E5%82%A8%E7%BB%93%E6%9E%84%E7%9A%84%E4%B8%80%E5%85%83%E5%A4%9A%E9%A1%B9%E5%BC%8FA%E5%92%8CB%2C%E7%BC%96%E5%86%99%E7%AE%97%E6%B3%95%E5%B0%86%E5%A4%9A%E9%A1%B9%E5%BC%8FA%E5%92%8CB%E7%9B%B8%E5%8A%A0%2C%E8%A6%81%E6%B1%82%E5%88%A9%E7%94%A8%E5%8E%9F%E8%A1%A8%E7%9A%84%E7%BB%93%E7%82%B9%E7%A9%BA%E9%97%B4%E5%92%8C%E5%A4%9A%E9%A1%B9%E5%BC%8F.)
#include
#include
#include
typedef struct
{
float coef;
int expn;
}
ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}
LNode,*LinkList;
LinkList InitList()//创建链表
{
LinkList L;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
return(L);
}
void InsLNode(LinkList L,ElemType x)//插入链表函数
{
LinkList s,p;
s=(LinkList)malloc(sizeof(LNode));
s->data=x;
p=L;
while(p->next)
p=p->next;
s->next=NULL;
p->next=s;
}
void AddPolyn(LinkList pa,LinkList pb)//多项式相加
{
LinkList ha,hb,qa,qb;
float sum;int a,b;
ha=pa;hb=pb;
qa=ha->next;qb=hb->next;
while(qa&&qb)
{
a=qa->data.expn;b=qb->data.expn;;
if(anext;
}
if(a==b)
{
sum=qa->data.coef+qb->data.coef;
if(sum!=0)
{
qa->data.coef=sum;
ha=qa;
qa=qa->next;
hb->next=qb->next;
free(qb);
qb=hb->next;
}
else
{
ha->next=qa->next;
free(qa);qa=ha->next;
hb->next=qb->next;
free(qb);
qb=hb->next;
}
}
if(a>b)
{
hb->next=qb->next;qb->next=ha->next;
ha->next=qb;
ha=qb;
free(qb);
qb=hb->next;
}
}
if(qb)
ha->next=qb;
free(hb);
}
void Invert(LinkList L)//逆序输出链表
{LinkList p,q,r;
p=L->next;
q=p->next;
while(q!=NULL)
{r=q->next;
q->next=p;
p=q;
q=r;
}L->next->next=NULL;
L->next=p;
}
void Print(LinkList L)//输出多项式
{
LinkList p;
p=L->next;
while(p->next)
{
printf("%fx^%d+",p->data.coef,p->data.expn);
p=p->next;
}
printf("%fx^%d",p->data.coef,p->data.expn);
}
void main()
{
LinkList La,Lb;ElemType c;
int a,i;
La=InitList();
Lb= InitList();
printf("输入La的项数:");
scanf("%d",&a);
for(i=0;i
#include
#include
typedef struct
{
float coef;
int expn;
}
ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}
LNode,*LinkList;
LinkList InitList()//创建链表
{
LinkList L;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
return(L);
}
void InsLNode(LinkList L,ElemType x)//插入链表函数
{
LinkList s,p;
s=(LinkList)malloc(sizeof(LNode));
s->data=x;
p=L;
while(p->next)
p=p->next;
s->next=NULL;
p->next=s;
}
void AddPolyn(LinkList pa,LinkList pb)//多项式相加
{
LinkList ha,hb,qa,qb;
float sum;int a,b;
ha=pa;hb=pb;
qa=ha->next;qb=hb->next;
while(qa&&qb)
{
a=qa->data.expn;b=qb->data.expn;;
if(anext;
}
if(a==b)
{
sum=qa->data.coef+qb->data.coef;
if(sum!=0)
{
qa->data.coef=sum;
ha=qa;
qa=qa->next;
hb->next=qb->next;
free(qb);
qb=hb->next;
}
else
{
ha->next=qa->next;
free(qa);qa=ha->next;
hb->next=qb->next;
free(qb);
qb=hb->next;
}
}
if(a>b)
{
hb->next=qb->next;qb->next=ha->next;
ha->next=qb;
ha=qb;
free(qb);
qb=hb->next;
}
}
if(qb)
ha->next=qb;
free(hb);
}
void Invert(LinkList L)//逆序输出链表
{LinkList p,q,r;
p=L->next;
q=p->next;
while(q!=NULL)
{r=q->next;
q->next=p;
p=q;
q=r;
}L->next->next=NULL;
L->next=p;
}
void Print(LinkList L)//输出多项式
{
LinkList p;
p=L->next;
while(p->next)
{
printf("%fx^%d+",p->data.coef,p->data.expn);
p=p->next;
}
printf("%fx^%d",p->data.coef,p->data.expn);
}
void main()
{
LinkList La,Lb;ElemType c;
int a,i;
La=InitList();
Lb= InitList();
printf("输入La的项数:");
scanf("%d",&a);
for(i=0;i
两个以单链表作存储结构的一元多项式A和B,编写算法将多项式A和B相加,要求利用原表的结点空间和多项式.
把多项式a^2+b^2-a-b写成两个多项式的和.
用c++实现,假设有两个元素递增的有序排列线性表A和B,均以顺序表作存储结构.试编写算法将A表和B表归并成一个按元素值递
写出两个多项式,使它们的和为a^+b^
两个十次多项式的和是() A,20次多项式 B,十次多项式 C,一百次多项式 D,不高于十次的
编写一个程序用单链表存储多项式,并实现两个多项式相加的函数?
数据结构(C语言)用单链表存储一元多项式,并实现两个多项式的相加运算
多项式A与多项式B的和是3x+x2,多项式B与多项式C的和是-x+3x2,那么多项式A减去多项式C的差是
多项式A与多项式B的和是3x+x²方,多项式B与多项式C的和是-x+3x²方,那么多项式A减去多项式
多项式A与多项式B的和是3x+3x²;,多项式B与多项式C的和是-x+x²,那么多项式A减去多项式C
判断:两个二次多项式的和必是二次多项式.( ) A:错误 B:正确 需原因
两个五次多项式相加后A.十次多项式B.五次多项式C.次数不低于五次的多项式D.次数不高于五次的整式