📄 doubleendlist.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 + -