⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 link.h

📁 一个模拟沃尔玛柜台结账的排队论仿真
💻 H
字号:
#ifndef LINK_H
#define LINK_H
#include "para.h"

template <class T> class link
{
public:
	link();
	link(T* val, link<T>* pt);

	void addTail(T* val);
	void addPri(T* val);

	T* sechGenMes();
	T* getVal();
	link<T>* getPt();
	void setPt(link<T>* pt);
	void showLink();
	
private:
	T* value;
	link<T>* ptNxt;
};

template<class T> link<T>::link():ptNxt(NULL){}
template<class T> link<T> :: link(T* val, link<T>* pt):value(val),ptNxt(pt){}
template<class T> T* link<T>::getVal(){return value;}
template<class T> link<T>* link<T>::getPt(){return ptNxt;}
template<class T> void link<T>::setPt(link<T>* pt){ptNxt=pt;}

template<class T> void link<T>::addTail(T* val)
{
	if(ptNxt==NULL)
	{
		ptNxt=new link<T>(val,ptNxt);
	}
	else
	{
		ptNxt->addTail(val);
	}
}

template<class T> void link<T>::addPri(T* val)
{
	if(ptNxt==NULL)
		ptNxt=new link<T>(val,ptNxt);
	else
	{
		if(val->getTim()<ptNxt->value->getTim())
			ptNxt=new link<T>(val,ptNxt);
		else
			ptNxt->addPri(val);
	}
}

template<class T> T* link<T>::sechGenMes()
{
	//cout<<"searching...";
	if(value->getType()==GEN)	
		return value;
	if(ptNxt==NULL)
		return NULL;
	return ptNxt->sechGenMes();
}

template<class T> void link<T>::showLink()
{	
	cout<<"Type: "<<value->getType()<<"  Tim: "<<value->getTim()<<endl;
	if(ptNxt==NULL)
		return;
	ptNxt->showLink();
}

//////////////////////////////////////////////////
template <class T> class list
{
public:
	list();
	void addTail(T* val);
	void addPri(T* val);
	
	T* viewHead();
	T* getHead();
	T* sechGenMes();

	int getLen();
	void showList();

private:
	link<T>* ptFirst;
	int len;
	friend class link<T>;
};

template<class T> list<T>::list():ptFirst(NULL),len(0){}

template<class T> void list<T>::addTail(T* val)
{
	if(ptFirst==NULL)
	{
		ptFirst=new link<T>(val,ptFirst);
	}
	else
	{
		ptFirst->addTail(val);
	}
	len++;
}

template<class T> void list<T>::addPri(T* val)
{
	if(ptFirst==NULL)
		ptFirst=new link<T>(val,ptFirst);
	else
	{
		if(val->getTim()<ptFirst->getVal()->getTim())
			ptFirst=new link<T>(val,ptFirst);
		else
			ptFirst->addPri(val);
	}
	len++;
}

template<class T> T* list<T>::getHead()
{
	if(ptFirst==NULL)
		return NULL;
	link<T>* tem=ptFirst;
	ptFirst=ptFirst->getPt();
	len--;
	tem->setPt(NULL);
	return tem->getVal();
}

template<class T> int list<T>::getLen()
{
	return len;
}

template<class T> T* list<T>::viewHead()
{
	if(len==0)
		return NULL;
	return ptFirst->getVal();
}

template<class T> T* list<T>::sechGenMes()
{
	if(len==0)
		return NULL;
	assert(ptFirst);
	return ptFirst->sechGenMes();
}
	
template<class T> void list<T>::showList()
{
	if(ptFirst==NULL)
		return;
	ptFirst->showLink();
}

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -