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

"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;
}


你可能感兴趣的:(数据结构_链表_多项式求导_C++实现)