大哥大姐们,帮我看看我编多项式的程序,调试通过了。但还是得不到我想要的结果。
是不是把lb中的元素插入到la中,需要建立新的结点,我认为只需要改变指针的指向即可,没有必要建立新的结点。是不是这个算法还有什么不完善的,请指教。
#include <stdio.h>
#include <stdlib.h>
#define null 0
typedef struct list
{
float ceof;
int zhishu;
struct list *next;
}term;
term *creat(int n)
{
term *head,*p,*q;
int i;
head=(term *)malloc(sizeof(term));
head.ceof=0.0;
head.zhishu=-1;
p=head;
for(i=0;i<n;i++)
{
q=(term *)malloc(sizeof(term));
scanf("%d%d",&p.ceof,&p.zhishu);
q->next=null;
p->next=q;
p=q;
}
p->next=null;
return head;
}
void xiangjia(*la,*lb)
{
term *ha,*hb,*qa,*qb;
ha=la; hb=lb;
qa=ha->next;qb=hb->next;
while(qa&&qb)
{
if(qa.zhishu<qb.zhishu)
{ ha=qa;qa=qa->next;}
else if(qa.zhishu==qb.zhishu)
{
sum=qa.zhishu+qb.zhishu;
if(sum!=0)
{
qa.zhishu=sum;
ha=qa;
}
else
{
ha->next=qa->next; free(qa);
hb->next=qb->next; free(qb);
qa=ha->next;
qb=hb->next;
}
}
else
{
hb->next=qb->next; free(qb);
ha->next=qb;
qb->next=qa->next;
qb=hb->next;
ha=ha->next;
}
}
if(!qa)
{ qa->next=qb;free(hb);}
}
void display(*head)
{
term *p;
p=head->next;
while(p)
{
printf("%d*x%d",p.ceof,p.zhishu);
p=p->next;
}
printf("\n");
}
void main()
{
term *la,*lb;
printf("请输入多项式的长度m和n\n");
scanf("%d%d",&m,&n);
la=creat(m);
lb=creat(n);
xiangjia(la,lb);
printf("相加得到的多项式为:\n");
display(la);
}
#include <stdio.h>
#include <stdlib.h>
#define null 0
typedef struct list
{
float ceof;
int zhishu;
struct list *next;
}term;
term *creat(int n)
{
term *head,*p,*q;
int i;
head=(term *)malloc(sizeof(term));
head.ceof=0.0;
head.zhishu=-1;
p=head;
for(i=0;i<n;i++)
{
q=(term *)malloc(sizeof(term));
scanf("%d%d",&p.ceof,&p.zhishu);
q->next=null;
p->next=q;
p=q;
}
p->next=null;
return head;
}
void xiangjia(*la,*lb)
{
term *ha,*hb,*qa,*qb;
ha=la; hb=lb;
qa=ha->next;qb=hb->next;
while(qa&&qb)
{
if(qa.zhishu<qb.zhishu)
{ ha=qa;qa=qa->next;}
else if(qa.zhishu==qb.zhishu)
{
sum=qa.zhishu+qb.zhishu;
if(sum!=0)
{
qa.zhishu=sum;
ha=qa;
}
else
{
ha->next=qa->next; free(qa);
hb->next=qb->next; free(qb);
qa=ha->next;
qb=hb->next;
}
}
else
{
hb->next=qb->next; free(qb);
ha->next=qb;
qb->next=qa->next;
qb=hb->next;
ha=ha->next;
}
}
if(!qa)
{ qa->next=qb;free(hb);}
}
void display(*head)
{
term *p;
p=head->next;
while(p)
{
printf("%d*x%d",p.ceof,p.zhishu);
p=p->next;
}
printf("\n");
}
void main()
{
term *la,*lb;
printf("请输入多项式的长度m和n\n");
scanf("%d%d",&m,&n);
la=creat(m);
lb=creat(n);
xiangjia(la,lb);
printf("相加得到的多项式为:\n");
display(la);
}
...全文
相关推荐
一个检验C 语言的很好小程序
当然我还要向各位大哥大姐们请教,学习!
电信设备-带寻呼机的大哥大手机及其通讯系统.zip
**技术演进**:从大哥大手机到现代智能手机,我们可以看到通信技术的巨大进步,包括数字信号处理、3G、4G、5G网络的引入,以及各种附加功能的增加,如互联网接入、多媒体和应用程序。7.
电子政务-大哥大手机电磁波防护套.zip
行业分类-电子政务-大哥大手机电磁波防护套.pdf" 这个文件名表明,文档可能包含了关于电子政务在处理大哥大手机电磁波防护问题的具体内容。可能涵盖了以下知识点:1.
电子政务-大哥大太阳能电池.zip
**大哥大太阳能电池的应用**:详细描述了在电子政务项目中如何利用太阳能电池,尤其是在移动通信设备(可能是指早期的大哥大手机)或者远程信息处理设施中的应用。
一下是Tomcat在MyEclipse里运行时报的错
各位大哥大姐们。。下地先谢过了!


