数据结构相关笔记整理(1.2)
最近数据结构进展缓慢,每个结构的代码少说都得200行,但是依旧喜欢成功运行时的成就感!这次主要整理了循环链表的模板class,新手上路难免有不当和瑕疵之处,希望群众们及时指出。下面贴出代码:
class及其函数定义:
//循环链表模板class
#include <iostream>
using namespace std;
template<class T>
struct CircleLinkNode {
T data;
CircleLinkNode<T> *link;
//构造函数
CircleLinkNode(CircleLinkNode<T> * next = NULL) : link(next) {}
CircleLinkNode(T d, CircleLinkNode<T> * next = NULL) : data(d), link(next) {}
};
template<class T>
class CircleList {
public:
CircleList(const T & x); //构造函数
CircleList(CircleList<T> & L); //复制构造函数
~CircleList(); //析构函数
int Length() const; //计算循环链表的长度
bool IsEmpty()
{
return first->link == first ? true : false; //判断是否是空表
}
CircleLinkNode<T> * getHead() const; //返回附加头节点的地址
void setHead(CircleLinkNode<T> * p); //设置附加头节点的地址
CircleLinkNode<T> * Search(T x); //搜索含数据x的节点
CircleLinkNode<T> * Locate(int i); //搜索第i个元素的地址
T getData(int i); //取出第i个元素的值
void setData(int i, T & x); //用修改第i个元素的值
bool Insert(int i, T & x); //在第i个元素后插入x
bool Remove(int i, T & x); //删除第i个元素,用x保存删除的数据
void createList(T endFlag); //创建单链表
void outputList(int stopSequence);
p