两个以单链表作存储结构的一元多项式A和B,编写算法将多项式A和B相加,要求利用原表的结点空间和多项式.
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/06 16:57:33
![两个以单链表作存储结构的一元多项式A和B,编写算法将多项式A和B相加,要求利用原表的结点空间和多项式.](/uploads/image/z/4533146-26-6.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.)
两个以单链表作存储结构的一元多项式A和B,编写算法将多项式A和B相加,要求利用原表的结点空间和多项式.
两个以单链表作存储结构的一元多项式A和B,编写算法将多项式A和B相加,要求利用原表的结点空间和多项式.
两个以单链表作存储结构的一元多项式A和B,编写算法将多项式A和B相加,要求利用原表的结点空间和多项式.
#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