亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? polynomial.cpp

?? 用循環鏈表實現的多項式 包括 運算符及io重載
?? CPP
字號:
#include "Polynomial.h"
#include <iostream>
using namespace std;

Node * CircList::av = 0;

CircList::CircList()
{
	Node *head = new Node();
	first = last = head;
	last->link = first;
}

CircList::~CircList()
{
	if(first)
	{
		Node *second = first->link;
		first->link = av;
		av = second;
		first = 0;
	}//是否要對last操作?av呢?
}

Node *CircList::GetNode()
{
	Node *x = 0;
	if(!av)
		x = new Node();
	else
	{
		x = av;
		av = av->link;
	}
	return x;
}

void CircList::RetNode(Node *x)
{
	x->link = av;
	av = x;
}

void CircList::InsertFront(Node *x)
{
	if(!last->link)
	{
		first = last = x;
		last->link = first;
	}
	else
	{
		x->link = last->link;
		first = x;
		last->link = first;
	}
}

void CircList::InsertRear(Node *x)
{
	if(!last->link)
	{
		first = last = x;
		last->link = first;
	}
	else
	{
		x->link = last->link;
		last->link = x;
		last = x;
	}
}

void CircList::DeleteFront()
{
	if(!last->link)
	{}//empty body
	else
	{//at least one node (except the head node) exists
		Node *x = first->link;//it's the first node after the head node that is to be deleted
		if(last==x)//there are only two nodes
		{
			first->link = first;//i.e. first->link = first->link->link;
			last = first;
		}
		else
			first->link = first->link->link;
		RetNode(x);//returning a node
	}
}

void CircList::DeleteRear()
{
	if(!last->link)
	{}//empty body
	else
	{//at least one node (except the head node) exists
		Node *x = last;//it's the first node after the head node that is to be deleted
		if(first->link==x)//there are only two nodes
		{
			first->link = first;
			last = first;
		}
		else
		{
			Node *prev = last;
			while(prev->link!=last)
				prev = prev->link;//last points to the previous node before last node
			prev->link = last->link;
			last = prev;
		}
		RetNode(x);//returning a node
	}
}

void CircList::Delete(Node *x)
{	
	if(x==first)
	{}//empty body
	else if(x==first->link)
		DeleteFront();
	else if(x==last)
		DeleteRear();
	else
	{
		Node *prev = x;
		while(prev->link!=x)
			prev = prev->link;
		prev->link = x->link;
		RetNode(x);
	}
}

Polynomial::Polynomial(const int t)
{
	Node *temp = 0;
	Terms = 0;//initialize...very important
	for(int i=0; i<t; i++)
	{
		temp = new Node();
		AddTerm(temp);
	}
}

Polynomial::Polynomial(const Polynomial&p)
{
	Copy(p);
}

const Polynomial &Polynomial::operator=(const Polynomial &p)
{
	if(&p!=this)
	{
		while(cl.GetFirst()!=(*cl.GetFirst()).GetLink())
			DeleteTerm();
		Copy(p);
	}

	return *this;
}

Polynomial::~Polynomial()
{
	cl.~CircList();
}

istream & operator>>(istream &input,Polynomial &p)
{
	cout<<"for input, the form: c1,e1,c2,e2,c3,e3...,cn,en,"
	    <<"\nwhere ei represents an exponent and ci represents a coefficient,"
		<<"\nThe exponents are in decreasing order-i.e.,e1>e2>e3>...>en\n";
	Node *temp = (*p.cl.GetFirst()).GetLink();
	for(int i=1; i<=p.GetTerms(); i++)
	{		
		cout<<"c"<<i<<": ";
		input>>(*temp).GetCoef();
		cout<<"e"<<i<<": ";
		input>>(*temp).GetExp();
		temp = ((*temp).GetLink());
	}

	return input;
}

ostream & operator<<(ostream &output,const Polynomial &p)
{
	Node *temp = (*p.cl.GetFirst()).GetLink();
	output<<(*temp).GetCoef()<<"x^"
		  <<(*temp).GetExp();
	temp = ((*temp).GetLink());
	for(int i=2; i<p.GetTerms(); i++)
	{		
		if((*temp).GetCoef()>0)
			output<<"+";
		output<<(*temp).GetCoef()<<"x^"
			  <<(*temp).GetExp();/*//need improving*/
		temp = ((*temp).GetLink());
	}	
	if(p.GetTerms()>=2)
	{
		if((*temp).GetCoef()>0)
			output<<"+";
		output<<(*temp).GetCoef()<<"x^"
			  <<(*temp).GetExp();
	}
	output<<endl;
	return output;
}

Polynomial operator+(const Polynomial &a,const Polynomial &b)
{
	Node *p;
	Node *q;
	Node *temp;
	Polynomial c;
	float x;
	p = (*a.cl.GetFirst()).GetLink();
	q = (*b.cl.GetFirst()).GetLink();//get first node(not the head node) in a and b
	while(p!=a.cl.GetFirst()&&q!=b.cl.GetFirst())
	{
		switch(c.Compare((*p).GetExp(),(*q).GetExp()))
		{
		case '=':
			x = (*p).GetCoef()+(*q).GetCoef();
			temp  = new Node(x,(*p).GetExp());
			if(x)
				c.AddTerm(temp);
			p = (*p).GetLink();
			q = (*q).GetLink();
			break;
		case '<':
			temp = new Node((*q).GetCoef(),(*q).GetExp());
			c.AddTerm(temp);
			q = (*q).GetLink();//next node of b
			break;
		case '>':
			temp = new Node((*p).GetCoef(),(*p).GetExp());
			c.AddTerm(temp);
			p = (*p).GetLink();//next node of a
			break;
		}
	}

	while(p!=a.cl.GetFirst())//copy rest of a
	{
		temp = new Node((*p).GetCoef(),(*p).GetExp());
		c.AddTerm(temp);
		p = (*p).GetLink();
	}

	while(q!=b.cl.GetFirst())//copy rest of b
	{
		temp = new Node((*q).GetCoef(),(*q).GetExp());
		c.AddTerm(temp);
		q = (*q).GetLink();
	}

	return c;
}

Polynomial operator-(const Polynomial &a,const Polynomial &b)
{
	Node *p;
	Node *q;
	Node *temp;
	Polynomial c;
	float x;
	p = (*a.cl.GetFirst()).GetLink();
	q = (*b.cl.GetFirst()).GetLink();//get first node(not the head node) in a and b
	while(p!=a.cl.GetFirst()&&q!=b.cl.GetFirst())
	{
		switch(c.Compare((*p).GetExp(),(*q).GetExp()))
		{
		case '=':
			x = (*p).GetCoef()-(*q).GetCoef();
			temp  = new Node(x,(*p).GetExp());
			if(x)
				c.AddTerm(temp);
			p = (*p).GetLink();
			q = (*q).GetLink();
			break;
		case '<':
			temp = new Node(-(*q).GetCoef(),(*q).GetExp());
			c.AddTerm(temp);
			q = (*q).GetLink();//next node of b
			break;
		case '>':
			temp = new Node((*p).GetCoef(),(*p).GetExp());
			c.AddTerm(temp);
			p = (*p).GetLink();//next node of a
			break;
		}
	}

	while(p!=a.cl.GetFirst())//copy rest of a
	{
		temp = new Node((*p).GetCoef(),(*p).GetExp());
		c.AddTerm(temp);
		p = (*p).GetLink();
	}

	while(q!=b.cl.GetFirst())//copy rest of b
	{
		temp = new Node(-(*q).GetCoef(),(*q).GetExp());
		c.AddTerm(temp);
		q = (*q).GetLink();
	}

	return c;
}

Polynomial operator*(const Polynomial &a,const Polynomial &b)
{
	Polynomial *c;
	int min = a.GetTerms()<b.GetTerms()?a.GetTerms():b.GetTerms();
	c = new Polynomial[min+1];
	Node *p;
	Node *q;
	Node *temp;
	float x;
	int y;
	p = (*a.cl.GetFirst()).GetLink();
	q = (*b.cl.GetFirst()).GetLink();//get first node(not the head node) in a and b
	if(a.GetTerms()<=b.GetTerms())
	{
		for(int i=1; i<=min&&p!=a.cl.GetFirst(); i++)
		{
			while(q!=b.cl.GetFirst())
			{
				x = (*p).GetCoef()*(*q).GetCoef();
				y = (*p).GetExp()+(*q).GetExp();
				temp  = new Node(x,y);
				if(x)
					c[i].AddTerm(temp);
				q = (*q).GetLink();
			}
			p = (*p).GetLink();
		q = (*b.cl.GetFirst()).GetLink();
		}
	}

	else
	{
		for(int i=1; i<=min&&p!=b.cl.GetFirst(); i++)
		{
			while(p!=a.cl.GetFirst())
			{
				x = (*q).GetCoef()*(*p).GetCoef();
				y = (*q).GetExp()+(*p).GetExp();
				temp  = new Node(x,y);
				if(x)
					c[i].AddTerm(temp);
				p = (*p).GetLink();
			}
			q = (*q).GetLink();
		p = (*a.cl.GetFirst()).GetLink();
		}
	}

	for(int i=1; i<=min; i++)
		c[0] = c[0] + c[i];

	return c[0];
}

void Polynomial::AddTerm(Node *x)
{
	cl.InsertRear(x);
	Terms++;
}

void Polynomial::DeleteTerm()
{
	cl.DeleteRear();
	Terms--;
}

float Polynomial::Evaluate(float x)
{
	float sum = 0;
	Node *temp=(*(cl.GetFirst())).GetLink();
	for(int i=0; i<GetTerms(); i++)
	{
		sum+=Calculate(x,(*temp).GetCoef(),(*temp).GetExp());
		temp = (*temp).GetLink();
	}
	return sum;	
}

void Polynomial::Copy(const Polynomial &p)
{
	Terms = 0;
	Node *x=(*(p.GetCl().GetFirst())).GetLink();
	Node *temp = 0;
	for(int i=0; i<p.GetTerms(); i++)
	{
		temp = new Node((*x).GetCoef(),(*x).GetExp());
		AddTerm(temp);
		x = (*x).GetLink();
	}
}

float Polynomial::Calculate(float x, float c, int e)
{
	float sum = 1;
	for(int i=0; i<e; i++)
		sum *= x;
	return c*sum;
}

char Polynomial::Compare(int x, int y)
{
	if(x==y)
		return '=';
	else if(x<y)
		return '<';
	else
		return '>';
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丝袜亚洲另类欧美综合| 972aa.com艺术欧美| 成人av在线播放网址| 在线观看成人免费视频| 国产午夜精品久久久久久免费视| 亚洲精品日韩综合观看成人91| 日本sm残虐另类| 色婷婷精品大在线视频| 久久久久88色偷偷免费| 日韩精品福利网| 色综合久久天天| 国产日韩欧美综合在线| 青娱乐精品在线视频| 99re热这里只有精品视频| 精品女同一区二区| 天天亚洲美女在线视频| 在线观看91视频| 国产精品免费视频一区| 国产在线麻豆精品观看| 欧美一区二区三区四区五区 | 91女厕偷拍女厕偷拍高清| 欧美一级日韩免费不卡| 亚洲一二三四在线| 色综合久久中文字幕| 国产精品伦理在线| 国产成人午夜片在线观看高清观看| 4438成人网| 五月综合激情网| 在线观看日韩电影| 亚洲一区二区三区四区中文字幕| 99视频一区二区| 中文字幕在线观看不卡视频| 国产一区二区三区精品视频| 精品久久久久99| 激情综合亚洲精品| 久久久青草青青国产亚洲免观| 精品亚洲aⅴ乱码一区二区三区| 欧美一区二区私人影院日本| 日韩成人一区二区| 日韩一区二区三区四区| 麻豆精品久久精品色综合| 日韩欧美在线观看一区二区三区| 日本特黄久久久高潮| 欧美一区二区女人| 久久成人免费电影| 久久久高清一区二区三区| 国产福利一区在线| 国产女同互慰高潮91漫画| 成人综合在线观看| 亚洲欧美日韩国产中文在线| 在线欧美一区二区| 日本美女一区二区三区视频| 精品三级av在线| 国产 日韩 欧美大片| 国产精品超碰97尤物18| 欧美午夜一区二区三区免费大片| 视频精品一区二区| 26uuu精品一区二区三区四区在线| 国产一区二区0| 一区二区三区在线影院| 69久久99精品久久久久婷婷| 久久国产精品区| 亚洲天堂精品在线观看| 欧美日韩美少妇| 国产一区二区在线观看免费| 自拍偷拍国产精品| 欧美精品日韩综合在线| 国产一区二区三区久久悠悠色av| 亚洲欧美激情视频在线观看一区二区三区| 91毛片在线观看| 久久精品国产澳门| 亚洲日本青草视频在线怡红院| 91麻豆精品91久久久久同性| 国产91在线|亚洲| 亚洲成av人片www| 国产片一区二区| 欧美久久久久久久久| 成人av电影观看| 日本不卡一区二区三区| 国产精品视频第一区| 这里只有精品视频在线观看| 不卡一区二区在线| 蜜桃视频一区二区三区| 亚洲自拍偷拍欧美| 亚洲国产精品t66y| 日韩一区二区三区四区| 91久久人澡人人添人人爽欧美| 精品一区二区三区在线视频| 亚洲综合免费观看高清完整版在线| 欧美精品一区二区在线播放| 欧美在线制服丝袜| av中文一区二区三区| 国产在线看一区| 久久国产麻豆精品| 丝袜a∨在线一区二区三区不卡 | 成人小视频免费观看| 日韩影院免费视频| 亚洲综合成人网| 亚洲精品视频在线| 中文字幕不卡的av| 久久精品一区二区三区不卡 | 欧美精品久久99| 色乱码一区二区三区88| 成人动漫一区二区在线| 国产美女娇喘av呻吟久久| 久久成人av少妇免费| 日韩精品欧美精品| 亚瑟在线精品视频| 亚洲高清不卡在线观看| 亚洲乱码国产乱码精品精的特点| 久久精品一区二区三区不卡牛牛| 欧美videossexotv100| 91精品在线观看入口| 欧美精品在欧美一区二区少妇| 在线区一区二视频| 欧美综合久久久| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 成人av在线资源网站| av在线这里只有精品| 91原创在线视频| 色综合一个色综合| 色综合久久久久久久久久久| 99精品国产热久久91蜜凸| 91丨porny丨蝌蚪视频| 色婷婷久久综合| 欧美日韩国产免费| 欧美一区二区三区人| 欧美大尺度电影在线| 久久综合五月天婷婷伊人| 欧美精品一区二区久久久| 久久久国际精品| 成人欧美一区二区三区1314| 亚洲精品欧美综合四区| 日韩精品电影在线观看| 国产一区二区三区美女| 成人av网站在线| 欧美视频一区二区在线观看| 51午夜精品国产| 久久久综合激的五月天| 国产精品美女视频| 亚洲一区二区不卡免费| 美女网站一区二区| 处破女av一区二区| 欧美日韩精品免费观看视频| 日韩精品一区在线| 国产精品人妖ts系列视频| 亚洲黄色免费电影| 奇米精品一区二区三区在线观看| 国产一区二区在线免费观看| 一本一道久久a久久精品综合蜜臀| 8x8x8国产精品| 国产欧美一区二区三区沐欲| 亚洲精品ww久久久久久p站| 蜜桃久久精品一区二区| 成人精品视频一区二区三区 | 日本亚洲三级在线| 成人一区二区三区视频在线观看| 色狠狠色狠狠综合| 久久只精品国产| 亚洲综合丁香婷婷六月香| 国产在线观看免费一区| 99精品桃花视频在线观看| 日韩欧美视频在线| 亚洲精品国产一区二区精华液| 毛片av一区二区| 波多野结衣欧美| 欧美一区午夜视频在线观看| 国产精品亲子乱子伦xxxx裸| 日韩精品一二三区| 99精品1区2区| 久久婷婷国产综合精品青草| 亚洲与欧洲av电影| 国产91在线观看| 日韩精品在线看片z| 亚洲成人一二三| av午夜一区麻豆| 久久久久久久综合日本| 视频在线观看一区二区三区| 99r精品视频| 国产清纯美女被跳蛋高潮一区二区久久w| 亚洲一区二区在线免费看| 99久久久久久99| 欧美激情在线一区二区三区| 美女网站色91| 91精品国产日韩91久久久久久| 亚洲欧美日韩在线播放| 成+人+亚洲+综合天堂| 国产无人区一区二区三区| 麻豆精品久久精品色综合| 制服丝袜一区二区三区| 午夜伦理一区二区| 欧美在线不卡视频| 亚洲另类一区二区| 91在线视频免费观看| 国产无人区一区二区三区| 国产一区三区三区| 久久久www成人免费毛片麻豆| 狂野欧美性猛交blacked| 欧美一二区视频| 蜜桃传媒麻豆第一区在线观看|