求大虾帮忙看下这个多项式求和的c++程序哪里错了
#include <iostream>
using namespace std;
struct term
{
double coef;//系数
int expn;//指数
};
struct PNode
{
term data;
PNode *next;
};
class Polyn
{
PNode *phead;
public :
Polyn(){ phead=new PNode; phead->next=NULL;}
~Polyn(){delete phead;}
void clear(){phead->next=NULL;}
void creat();
Polyn PolynAdd(Polyn Pb);
void print();
};
Polyn Polyn::PolynAdd(Polyn Pb)//加法
{
Polyn Pc;
PNode *p3,*p2,*p1;
p1=phead;
p2=Pb.phead;
p3=Pc.phead;
PNode *t1=p1->next,*t2=p2->next,*t3=p3;
while(t1!=NULL&&t2!=NULL)
{
if(t1->data.expn<t2->data.expn)
{
t3->next=new PNode;
t3=t3->next;
t3->data=t1->data;
t1=t1->next;
}
else if(t1->data.expn>t2->data.expn)
{
t3->next=new PNode;
t3=t3->next;
t3->data=t2->data;
t2=t2->next;
}
else
{
double a=t1->data.coef+t2->data.coef;
if(a!=0.0)
{
t3->next=new PNode;
t3=t3->next;
t3->data.coef=a;
t3->data.expn=t1->data.expn;
}
t1=t1->next;
t2=t2->next;
}
}
while(t1!=NULL)
{
t3->next=new PNode;
t3=t3->next;
t3->data=t1->data;
t1=t1->next;
}
while(t2!=NULL)
{
t3->next=new PNode;
t3=t3->next;
t3->data=t2->data;
t2=t2->next;
}
t3->next=NULL;
return Pc;
}
void Polyn::creat()//创建链表
{
PNode *p,*q;
int n;
q=phead;
cout<<"请输入项数!"<<endl;
cin>>n;
cout<<"请输入各项系数和指数!"<<endl;
for(int i=0;i<n;i++)
{
p=new PNode;
cin>>p->data.coef>>p->data.expn;
p->next=NULL;
q->next=p;
q=p;
}
}
void Polyn::print()//输出
{
PNode *p;
p=phead->next;
cout<<"\n";
while(p)
{
cout<<p->data.coef<<"\t"<<p->data.expn;
p=p->next;
}
cout<<endl;
}
void main()
{
Polyn Pa,Pb,Pc;
Pa.creat();
Pb.creat();
Pc=Pa.PolynAdd(Pb);
Pc.print();
}
[解决办法]
单步调试和设断点调试是程序员必须掌握的技能之一。
[解决办法]
http://blog.csdn.net/zlhy_/article/details/8711477
可以参看这篇博客,有源代码分析。
[解决办法]
设断点跑跑