这个C++程序的问题?(单链表实现两个多项式相乘)

[复制链接]
查看11 | 回复2 | 2008-11-26 10:56:54 | 显示全部楼层 |阅读模式
#include
using namespace std;
struct list
{
int coef;//系数
int exp;//指数
list *next;
};
list *Creat()//创建带头结点的链表
{
list *h,*r,*s;//h是头结点,存放项的个数,指向第一项
r=h=new list;
h->next=NULL;
while(1)
{
s=new list;
cin>>s->coef>>s->exp;
if(s->coef==0)
break;
if(h->next==NULL)
{
r=s;//r=h->next
h->next=r;
}
else
{
r->next=s;
r=s;
}
}
r->next=NULL;
return h;
}
void Display(list *h)//输出链表
{
list *p;
p=h->next;
coutnext!=NULL)

coutcoefexpcoefexp;
p=p->next;
}
coutnext;p1;p1=p1->next)
for(q1=p1,q2=q1->next;q2;q1=q2,q2=q2->next)
if(p1->exp==q2->exp)
{

p1->coef+=q2->coef;

q1->next=q2->next;

delete q2;

q2=q1;//q2=q1->next;
}
return h1;
}
list *Multiply(list *h1,list *h2)//实现两个链表相乘
{
list *p1,*p2,*q1;
int c,e;

p1=h1->next;
p2=p1->next;
q1=h2->next;
do
{
c=p1->coef;
e=p1->exp;
while(q1)
{

p1->coef=c*q1->coef;

p1->exp=e+q1->exp;

if(q1->next!=NULL)

{

p1->next=new list;

p1=p1->next;

}

q1=q1->next;
}
q1=h2->next;
p1->next=p2;
p1=p2;
if(p2->next!=NULL)

p2=p2->next;
}while(p2);
h1=Huajian(h1);
return h1;
}
main()
{
list *h1,*h2;
h1=Creat();
Display(h1);
h2=Creat();
Display(h2);
h1=Multiply(h1,h2);
Display(h1);
return 0;
}
问题应该在Multiply函数中,但是却找不出

回复

使用道具 举报

千问 | 2008-11-26 10:56:54 | 显示全部楼层
很难找出,不好读,给你写一个很清楚的,调试已通过:list *Multiply(list *h1,list *h2)//实现两个链表相乘 {
// h1 * h2
list *result = new list;
result->next = NULL;
list *temp = result;
list *p1, *p2;
p1 = h1->next;
while (p1)
{
p2 = h2->next;
while (p2)
{
list *q = new list...
回复

使用道具 举报

千问 | 2008-11-26 10:56:54 | 显示全部楼层
list *Multiply(list *h1,list *h2)//实现两个链表相乘 { // h1 * h2 list *result = new list; result->next = NULL; list *temp = result; list *p1, *p2; p1 = h1->next; while ...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行