📄 9-6.h
字号:
//9-6.h
#ifndef LINKEDLIST_CLASS
#define LINKEDLIST_CLASS
#include <iostream.h>
#include <stdlib.h>
#ifndef NULL
const int NULL = 0;
#endif // NULL
#include "9-3.h"
template <class T>
class LinkedList
{
private:
//数据成员:
// 表头和表尾指针
Node<T> *front, *rear;
// 记录表当前遍历位置的指针,由插入和删除操作更新
Node<T> *prevPtr, *currPtr;
// 表中的元素个数
int size;
// 当前元素在表中的位置序号。由函数Reset使用
int position;
//函数成员:
// 生成新节点,数据域为item,指针域为ptrNext
Node<T> *GetNode(const T& item,Node<T> *ptrNext=NULL);
//释放节点
void FreeNode(Node<T> *p);
// 将链表L 拷贝到当前表(假设当前表为空)。
// 被拷贝构造函数、operator=调用
void CopyList(const LinkedList<T>& L);
public:
// 构造函数
LinkedList(void);
LinkedList(const LinkedList<T>& L); //拷贝构造函数
// 析构函数
~LinkedList(void);
// 重载赋值运算符
LinkedList<T>& operator= (const LinkedList<T>& L);
// 检查表的状态
int ListSize(void) const; //返回链表中元素个数(size)
int ListEmpty(void) const; //size等于0时返回TRUE,否则返回FALSE
// 遍历表的函数
void Reset(int pos = 0);
//将指针currPtr移动到序号为pos的节点,prevPtr相应移动
// position记录当前节点的序号
void Next(void); //使prevPtr和currPtr移动到下一个节点
int EndOfList(void) const;
// currPtr等于NULL时返回TRUE,否则返回FALSE
int CurrentPosition(void) const; //返回数据成员position
// 插入节点的函数:插入一个数据域为item的节点
void InsertFront(const T& item); //在表头插入
void InsertRear(const T& item); //在表尾添加
void InsertAt(const T& item); //在当前节点之前插入
void InsertAfter(const T& item); //在当前节点之后插入
// 删除节点,释放节点空间,更新prevPtr、currPtr和size
T DeleteFront(void); //删除头节点
void DeleteAt(void); //删除当前节点
// 返回对当前节点成员data的引用(使数据域可以被使用或修改)
T& Data(void);
// 清空链表:释放所有节点的内存空间。被析构函数、operator= 调用
void ClearList(void);
};
#endif // LINKEDLIST_CLASS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -