//基于链表的类Chain
#include <iostream>
using namespace std;
//节点类,定义了每个节点的存储类型和指针名称
template<class T>
class ChainNode
{
public:
T data;
ChainNode<T> *link;
};
//链表类,封装了链表操作的相应方法
template<class T>
class Chain
{
public:
Chain()
{
first=0; //构造函数,头结点指向空值
}
~Chain(); //析构函数
bool IsEmpty()const
{
return first==0; //判断是否为空
}
int Length()const; //返回该链表的长度
bool Find(int k,T&x)const; //返回第k个元素到x中
int Search(const T&x)const; //返回x所在的位置
Chain<T>& Delete(int k,T& x); //删除第k个元素并把它返回到x中
Chain<T>& Insert(int k,const T&x); //在第k个元素之后插入x
void Output(ostream& out) const; //重载操作符的输出函数
ChainNode<T> *first; //指向第一个节点的指针
ChainNode<T> *last; //指向最后一个节点的指针
void Erase();
void Zero()
{
first=0;
};
Chain<T>& Append(const T&x);
};
//链表遍历器类实现对链表的遍历
template<class T>
class ChainIterator
{
public:
T* Initialize(const Chain<T>&c)
{
location = c.first;
if(location)
{
return &location->data;//为何有地址符?
}
return 0;
}
T* Next()
{
if(!location)
return 0;
location = location->link;
if(location)
return &
数据结构之Chain类
最新推荐文章于 2022-10-03 14:14:02 发布
本文介绍了基于链表的数据结构Chain类,包括其节点类ChainNode和链表类Chain的详细实现。Chain类提供了插入、删除、查找、输出等操作,并通过ChainIterator类实现了链表的遍历。文章还展示了如何在main函数中使用Chain类进行操作。
摘要由CSDN通过智能技术生成