|
发表于 2009-11-3 02:57:25
|
显示全部楼层
IP:江苏扬州
补充说明new和delete应该对应
#include<iostream>
using namespace std;
class mploy
{
public:
mploy *next;
mploy *creat(char);
friend void dele(mploy* pp);
void addploy(mploy *,mploy *);
void print(mploy *);
private:
int coef;
int expn;
};
int n;
void dele(mploy *pp)
{
if(pp==0)
return;
else
{
dele(pp->next);
delete pp;
}
}
mploy *mploy::creat(char ch)
{
mploy *head,*p1,*p2;
n=0;
p1=p2=new mploy;
cout<<"Input多项式的系数和指数"<<endl;
cin>>p1->coef>>p1->expn;
head=NULL;
while(p1->coef!=0)
{
n=n+1;
if(n==1)head=p1;
else p2->next=p1;
p2=p1;
p1=new mploy;
cin>>p1->coef>>p1->expn;
}
p2->next=NULL;
delete p1;
return head;
}
void mploy::addploy(mploy *a,mploy *b)
{
if(a==0||b==0)
return ;
mploy *ha,*hb,*p,*q;
ha=a;
hb=b;
int x;
p=a->next;
q=b->next;
while(p!=NULL&&q!=NULL)
{
if(p->expn<q->expn)
{
ha=p;
p=p->next;
}
else if(p->expn==q->expn)
{
x=p->coef+q->coef;
if(x!=0)
{
p->coef=x;
ha=p;
}
else
{
ha->next=p->next;
}
hb->next=q->next;
q=hb->next;
p=ha->next;
}
else
{
hb=q->next;
q->next=p;
ha->next=q;ha=q;q=hb;
}
}
if (q!=NULL)
ha->next=q;
}
void mploy::print(mploy *t)
{
if(t==NULL)
return ;
if(t->coef!=0)
{
if(t->expn!=0)
cout<<t->coef<<"x^"<<t->expn;
else
cout<<t->coef;
}
while(t=t->next)
{
if(t->coef>0)
cout<<"+";
cout<<t->coef<<"x^"<<t->expn;
}
cout<<endl;
}
void main()
{
mploy *a,*b;
mploy c;
a=c.creat('A');
cout<<"A=";
c.print(a);
b=c.creat('B');
cout<<"B=";
c.print(b);
c.addploy(a,b);
cout<<"M=";
c.print(a);
dele(b);
dele(a);
} |
|