C++模版类实现单循环链表(继承自抽象基类线性表)

单循环链表只是私有数据成员增加了一个指向尾节点的指针last,尾节点指针指向附加头节点,具体的函数实现只要注意这一点即可,与单链表差别不大,故只放出头文件。

#ifndef CirclList_h
#define CirclList_h
#include "LinearList.h"
template <class T>
struct CircLinkNode{
    T data;
    CircLinkNode<T>* link;
    CircLinkNode(CircLinkNode<T>* next = NULL) : link(next){}
    CircLinkNode(T d, CircLinkNode<T>* next = NULL) : data(d), link(next){}
};

template <class T>
class CircList : public LinearList<T>{
private:
    CircLinkNode<T>* first, * last;
public:
    CircList(){first = last = new CircLinkNode<T>(first);}
    CircList(const T& x){first = last = new CircLinkNode<T>(x, first);}
    CircList(CircList<T>& L);
    ~CircList();
    int Length()const;
    int Search(T& x)const;
    CircLinkNode<T>* Locate(int i)const;
    T getData(int i)const;
    void setData(int i, T& x);
    bool Insert(int i, T& x);
    bool Remove(int i, T& x);
    bool IsEmpty(){return first->link == first ? true:false;}
    CircLinkNode<T>* getHead()const{return first;}
    void setHead(CircLinkNode<T>* p);
    void input();
    void output();
    CircList<T>& operator=(CircList<T>& L);
};

#endif /* CirclList_h */
发布了13 篇原创文章 · 获赞 0 · 访问量 447

猜你喜欢

转载自blog.csdn.net/Nemoosi/article/details/104338990
今日推荐