📄 模板链表_02.h
字号:
#ifndef EXAMPLE9_02_H
#define EXAMPLE9_02_H
#include <iostream>
#include <stdlib.h>
using namespace std;
template<class T>
class ListNode //结点类
{
public:
ListNode(){} //结点类构造函数
ListNode(const T& nItem, ListNode<T> *ptrNext=NULL); //结点类带参数构造函数
T& ShowData(){return Data;} //返回本结点数据的引用
void InsertAfter(ListNode<T> *ptr); //插入新结点作为本结点的后续结点
ListNode<T> *DeleteAfter(void); //删除本结点的后续结点
ListNode<T> *NextListNode() const; //获得本结点的后续结点的指针
void SetNext(ListNode<T> *ptr){ptrNext=ptr;} //设置本结点的后续结点指针
private:
T Data; //本结点的数据
ListNode<T> *ptrNext; //指向本结点的后续结点的指针
};
template <class T>
class LinkedList //链表类的声明及其实现
{
public:
LinkedList(void);
LinkedList(const LinkedList<T> &list); //拷贝构造函数
~LinkedList(void){DeleteAll();} //析构函数,释放链表占用的资源
LinkedList<T> &operator=(const LinkedList<T> &list); // ″=″号运算符 //的重载
void Next();//指向链表的下一个结点
int EndOfList() const{return (!ptrCurr);} //判断链表当前位置是否是表尾
int CurrPosition() const{return nPosition;}//获得当前位置指针在链表中的位置
ListNode<T> ptrFrontPosition() const{return ptrFront;}
ListNode<T> ptrTailPosition() const{return ptrTail;}
ListNode<T> ptrPrevPosition() const{return ptrPrev;}
void InsertFront(const T& nItem); //将数据为nItem的结点插入到链表头
void InsertTail(const T& nItem); //将数据为nItem的结点插入到链表尾
void InsertAt(const T& nItem); //将数据为nItem的结点插入到链表的当前位置
void InsertAfter(const T& nItem); //将数据为nItem的结点插入到链表的当前位置之后 //位置之后
void InsertOrder(T nItem);
//将数据为nItem的结点插入到排序链表中,并构成新的排序链表
int DeleteHead(); //删除链表头结点
void DeleteCurr(); //删除链表当前结点
void Delete(T key); //删除链表中数据为key的结点
void DeleteAll(); //删除链表中的所有结点
T& GetData(); //得到链表中的当前结点数据
void DisplayList(); //显示链表中所有结点的数据
int Find(T& nItem); //在链表中找到数据为nItem的结点
int ListLength() const{return nListLength;}; //求链表的长度
int ListEmpty() const{return nListLength;} //判断链表是否为空
void Reset(int nPos=0); //重新设置链表的当前指针的位置
private:
ListNode<T> *ptrFront, //链表的头结点指针
*ptrTail, //链表的尾结点指针
*ptrPrev, //链表的当前结点的前一个结点的指针
*ptrCurr; //链表的当前结点指针
int nListLength; //链表的长度
int nPosition; //链表的当前结点指针的位置
ListNode<T> *GetListNode(const T &nItem,ListNode<T> *ptrNext=NULL);
//获得链表的下一个结点指针
void FreeListNode(ListNode<T> *ptr){delete ptr;} //释放结点资源
void CopyList(const LinkedList<T>& list); //逐项拷贝链表
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -