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

📄 doubleendlist.h

📁 数据结构各种算法的比较程序
💻 H
字号:
#ifndef doublelist
#define doublelist
//双段表基本操作
#include"linklist.h"
//#include"listIterator.h"
//------------------------------------------------------------------------------------------双端表
template<class T>
class doubleEndlist:public list<T>
{
public:
	doubleEndlist();
	doubleEndlist(const doubleEndlist<T> &);
	virtual void add(T value);
	virtual void deleteAllValues();
	virtual void removeFirst();
	void addToEnd(T value);
protected:
	link<T>* ptrTolastlink;
};
template<class T> doubleEndlist<T>::doubleEndlist()
{
	list<T>();
	ptrTolastlink=0;
}
template<class T> doubleEndlist<T>::doubleEndlist(const doubleEndlist<T> & source)
{
	if(source.isEmpty())
	{
		ptrTofirstlink=0;
		ptrTolastlink=0;
	}
	else
	{
	link<T>* p=source.ptrTofirstlink;
	ptrTofirstlink=p->duplicate();
	assert(ptrTofirstlink!=0);
	p=ptrTofirstlink;
	while(p->ptrTonextlink==0)
		p=p->ptrTonextlink;
	ptrTolastlink=p;
	}
}
template<class T> void doubleEndlist<T>::add(T value)
{
	if(isEmpty())
	{
		list<T>::add(value);
		ptrTolastlink=ptrTofirstlink;
	}
	else
		list<T>::add(value);
}
template<class T> void doubleEndlist<T>::deleteAllValues()
{
	ptrTolastlink=0;
	list<T>::deleteAllValues();
}
template<class T> void doubleEndlist<T>::removeFirst()
{
		list<T>::removeFirst();
		if(isEmpty())
			ptrTolastlink=0;
}
template<class T> void doubleEndlist<T>::addToEnd(T value)
{
	if(isEmpty())
		add(value);
	else
		ptrTolastlink=ptrTolastlink->insert(value);
}
//------------------------------------------------------------------------------------------双端表
#endif 

⌨️ 快捷键说明

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