//基于链表的类Chain
#include <iostream>
#include<new.h>
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)
[C++]数据结构:基于链表结构的Chain类和遍历器ChainIterator类
最新推荐文章于 2022-10-03 14:14:02 发布
本文介绍了C++中使用模板类实现的链表结构Chain,包括构造函数、析构函数、链表操作如判断是否为空、获取长度、查找、插入和删除元素等。此外,还提供了链表遍历器ChainIterator,用于遍历链表中的元素。通过示例代码展示了如何创建、操作和输出链表。
摘要由CSDN通过智能技术生成