多项式加法 帮改一下程序

来源:百度知道 编辑:UC知道 时间:2024/06/05 10:13:36
这个程序运行不了
跪求各位帮帮我改一下 或者告诉我哪里出问题也可以!
急!拜托了!

#include<stdio.h>
#include<malloc.h>
typedef struct lnode
{
int coef;
int expn;
struct lnode *next;
}lnode;
typedef lnode * plnode;
void print(plnode l)
{
while(l!=NULL)
{
if((l->coef!=0)&&(l->expn!=0))
printf("%dx%d",l->coef,l->expn);
if(l->expn==0)
printf("%d",l->coef);
if((l->next!=NULL)&&(l->next->coef>0)) printf("+");
if((l->next!=NULL)&&(l->next->coef<0)) printf("-");
l=l->next;
}
printf("\n");
}
void create(plnode &l)
{
int i=1,m;
plnode head,p;
printf("请输入项数:");
scanf("%d",&m);
head=(plnode)malloc(sizeof(lnode));
p=head;
head->next=NULL;
while(i<=m)
{
l=(plnode)malloc(sizeof(lno

你这个程序写得不是一般的乱……

main里ld=(plnode)malloc(sizeof(lnode));
而cheng(la,lb,ld);里ld=(plnode)malloc(sizeof(lnode));又做了一遍,之前的内存也没释放,变脏了……
同样,那个在main里的la也变脏了,你根本没用。

按你的写法,cheng也应该像add里一样
void cheng(plnode &la,plnode &lb,plnode &ld)
{
plnode r,s,t;
r=la;
s=lb;
t=ld;//加了个t
while(r!=NULL)
{
while(s!=NULL)
{
ld->next=(plnode)malloc(sizeof(lnode));//这里改了
ld=ld->next;//这里改了
ld->coef=(r->coef)*(s->coef);
ld->expn=(r->expn)+(s->expn);
//这里删除了
s=s->next;
}
s=lb;
r=r->next;
}
ld = t->next;
free(t);//这2行模仿你add函数。不明白这么做是为了什么。
printf("多项式A*B:\n");
print(ld);
}

add改这样:
void add(plnode &la,plnode &lb,plnode &lc)
{
plnode r,s,p;