C++编写的链式数据结构
包括了单链表,堆栈,队列,以及二叉数和迭代器首先发迭代器
//保存的文件名为ListIterator.h
#ifndef LISTITERATOR_H
#define LISTITERATOR_H
namespace Shining100ListIteraor//定义迭代器的名字空间
{
template<class T>
class Node//定义链式结构的结点类
{
public:
Node(const T& dataValue,Node<T>* linkValue):data(dataValue),link(linkValue){}//结点类的构造函数,并对结点赋于一个类型为T的值,和指向下一个结点的指针
const T getData() const{return data;}//返回结点的数据
Node<T>* getLink() const{return link;}//返回该结点指向下一个结点的指针
void setData(const T& dataValue){data=dataValue;}//给结点赋于一个类型为T的值
void setLink(Node<T>* linkValue){link=linkValue;}//设置该结点指向下一结点的指针
private:
T data;//结点的值
Node<T>* link;//该结点指向下一个结点的指针
};
template<class T>
class ListIterator//链式结构的迭代器类
{
public:
ListIterator():current(NULL){}//将当前结点的值指向空
ListIterator(Node<T>* currentValue):current(currentValue){}//将当前结点的值指向值currntValue
const T operator *(){return current->getData();}//重载操作符*,读取当前结点的值
ListIterator operator ++()重载操作符++,使指针指向下一个结点
{
current=current->getLink();//使指针向下移
return *this;
}
ListIterator operator ++(int)重载操作符++(操作符在数的后面)
{
ListIterator startVersion(current);
current=current->getLink();//使指针向下移
return startVersion;
}
bool operator ==(const ListIterator& rightSide) const{return current==rightSide.current;}//重在操作符==,判断等号左右两边的值是否相等
bool operator !=(const ListIterator& rightSide) const{return current!=rightSide.current;}//重在操作符!=,判断等号左右两边的值是否不相等
private:
Node<T>* current;//指向当前结点的指针
};
}
#endif
[[it] 本帖最后由 shining100 于 2008-2-10 12:04 编辑 [/it]]