📄 clistmz.h
字号:
//CListMZ.h
//双链表类的说明
#ifndef CListMZ_CLASS_20050329
#define CListMZ_CLASS_20050329
#define NULL 0
////////////////////////////////////////////////////////////////////////////////
template <class T> class CListMZ;
//模板类 _CListNote
//此类的定义仅仅只能被类CListMZ的使用
template <class T> class _CListNote{
private:
//构造函数
_CListNote(_CListNote<T> * up=NULL , _CListNote<T> * Donw=NULL);
_CListNote(T & data , _CListNote<T> * up=NULL , _CListNote<T> * Donw=NULL);
//属性
_CListNote<T> * Down;//指向后结点的指针
_CListNote<T> * Up;//指向前结点的指针
T Data;//数据元素
//申请友元类
friend class CListMZ<T>;
};
//类 _CListNote的定义结束
/////////////////////////////////////////////////////////////////////////////////////
//模板类 CListMZ
template <class T> class CListMZ{
//公有成员
public:
//构造函数
CListMZ();
CListMZ(int n);
CListMZ(int n,T & data);
CListMZ(CListMZ<T> & list);
//创建函数
bool Create(int n);
//创建长度为n的链表
//n>0,如果n<=0,则创建失败
//创建成功函数返回真值
bool Create(int n,T & data);
//创建长度为n的链表,初值都为data
//n>0,如果n<=0,则创建失败
//创建成功返函数回真值
bool Create(CListMZ<T> & list);
//用一个已存在的链表list对象创建一个新的的链表对象
//创建成功函数返回真值
//析构函数
~CListMZ();
//操作函数
void DestroyList();
//销毁一个链表
int GetLength() const;
//获得链表的长度
//如果链表是空的,则返回0
//如果链表不是空的,则返回链表的长度(>0)
bool GetAt(int n,T & data);
//获取第n个结点的数据元素
//如果n满足 0 <= n < GetLength(),则函数返回真值,否则返回假值
//数据元素由data返回
bool IsEmpty() const;
//链表是否为空
//如果n链表是空的,则函数返回真值,否则返回假值
bool SetAt(int n,const T & data);
//更改第n个结点的数据元素
//如果n满足 0 <= n <GetLength(),则函数返回真值,否则返回假值
bool Delete(int n);
//删除第n个结点
//如果n满足 0 <= n < GetLength(),则函数返回真值,否则返回假值
bool Find(const T & data,int & n);
//查找数据元素为data在链表中的位置
//如果链表中存在数据元素data,则n 返回该数据元素的位置值,函数返回真值,
//如果链表中不存在数据元素data,则函数返回假值
bool Insert(int n, T & data);
//如果n满足 0 <= n <= GetLength(),则函数返回真值,否则返回假值
//在链表第n位插入data,原来第n位的数据元素以及后面数据元素的序数增一
//如果成功,则返回真值,否则返回假值
bool Add(T & data);
//在链表后面追加数据元素data
//如果成功,则返回真值,否则返回假值
void Display();
//显示所有的元素
//运算符重载
T & operator [] (int n);
//如果n满足 0 <= n < GetLength(),则返回链表第n位的数据元素
//私有成员
private:
//属性
_CListNote<T> * m_pHead;//头指针
_CListNote<T> * m_pPoint;//当前指针
int m_nLength;//链表长度
int m_nPosition;//当前位置
//工具
void MoveToHead();
//当前位置和当前指针移向首位
bool MoveToPosition(int n);
//当前位置和当前指针为指定的位置
//如果 0 <= n < GetLength() ,则返回真值,否则返回假值
bool MoveToDown();
//当前位置和当前指针后移一位
//如果当前位置和当前指针已经到头,返回则假值,否则返回真值
bool MoveToUp();
//当前位置和当前指针前移一位
//如果当前位置和当前指针已经到尾,返回则假值,否则返回真值
void Set();
//给类属性赋初值
_CListNote<T> * NewElem(T & data,_CListNote<T> * up=NULL,_CListNote<T> * down=NULL);
//获得新的结点
_CListNote<T> * NewElem(_CListNote<T> * up=NULL,_CListNote<T> * down=NULL);
bool Check(int n);
//检查n的值
//如果 0 <= n < GetLength() ,则返回真值,否则返回假值
};
//类 CListMZ 的定义结束
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -