大哥大姐们,帮我看看我编多项式的程序,调试通过了。但还是得不到我想要的结果。

浮生如梦VIP 2011-09-20 07:34:28
是不是把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);




}
...全文
62 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
AndyZhang 2011-09-20
  • 打赏
  • 举报
回复
自己解决问题收获会更多
AnYidan 2011-09-20
  • 打赏
  • 举报
回复
单步调试一下,没有人比你更了解你的想法

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧