您的位置:首页 > 理论基础 > 数据结构算法

数据结构_链表_多项式求导_C++实现

2011-09-14 13:12 671 查看
"head.h"

#include<iostream>
#include<string>
using namespace std;

class NODE
{
public:
NODE();
int coef;
int exp;
NODE *next;
};

NODE::NODE()
{
coef=exp=0;
next=NULL;
}

class DATA
{
public:
DATA();
void GetPoly();
void Derivation();
void Print();
private:
NODE *head,*p,*pre;
int coef,exp;
};

DATA::DATA()
{
pre=head=p=NULL;
coef=exp=0;
}

void DATA::GetPoly()
{
cout<<"GetPoly Called !"<<endl<<endl;
cout<<"Please Input polynomial :"<<endl<<endl;
bool first=true;
while(cin>>coef>>exp)
{
if(first)
{
head=new NODE;
head->coef=coef;
head->exp=exp;
p=head;
first=!first;
}
else
{
p->next=new NODE;
p=p->next;
p->coef=coef;
p->exp=exp;
}
}
cin.clear();
}

void DATA::Derivation()
{
cout<<"Derivation Called !"<<endl<<endl;
if(head==NULL)
{
cout<<"No Data !"<<endl<<endl;
return;
}
else
{
pre=p=head;
while(p!=NULL)
{
if(p->exp==0)
{
if(p==head)
{
head=head->next;
delete p;
pre=p=head;
}
else
{
pre->next=p->next;
delete p;
p=pre->next;
}
}
else
{
p->coef*=p->exp;
p->exp--;
pre=p;
p=p->next;
}
}
}
}

void DATA::Print()
{
cout<<"Print Called !"<<endl<<endl;
if(head==NULL)
{
cout<<"No Data !"<<endl<<endl;
return;
}
p=head;
cout<<p->coef;
if(p->exp!=0)
cout<<"x^"<<p->exp;
p=p->next;
while(p!=NULL)
{
cout<<"+"<<p->coef;
if(p->exp!=0)
cout<<"x^"<<p->exp;
p=p->next;
}
cout<<endl<<endl<<endl;
}


"main.cpp"

#include"head.h"

int main()
{
DATA data;
data.GetPoly();
data.Print();
data.Derivation();
data.Print();
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: