头文件:
1 //功能代码已经全部改写完成了,只剩下的就是测试部分了,单链表改循环链表还是很容易改的! 2 //采用模板类来写的代码,不能分开写! 3 4 #ifndef LINKEDCircList_H 5 #define LINKEDCircList_H 6 7 template <class T> 8 struct CircLinkNode 9 { 10 T data; 11 CircLinkNode<T> *link; 12 CircLinkNode(CircLinkNode<T> *ptr=NULL){link=ptr;} 13 CircLinkNode(const T& item,CircLinkNode<T> *ptr=NULL){data=item;link=ptr;} 14 //初始化的方式很有特性啊 15 }; 16 17 template <class T> 18 class CircList 19 { 20 public: 21 CircList(); 22 CircList(const T &x); 23 CircList(CircList<T>& L); //复制构造函数 24 ~CircList(){makeEmpty();} 25 void makeEmpty(); 26 int Length()const; 27 CircLinkNode<T> *getHead()const {return first;} //返回头结点的地址 28 CircLinkNode<T> *Search(T &x); 29 CircLinkNode<T> *Locate(int i); 30 bool getData(int i,T &x); 31 bool setData(int i,T &x); 32 bool Insert(int i,T &x); 33 bool Remove(int i,T &x); 34 void Sort(); 35 void inputFront(T endTag); 36 void inputRear(T endTag); 37 void output(); 38 CircList<T>& operator=(CircList<T>&L); 39 protected: 40 CircLinkNode<T> *first; 41 CircLinkNode<T> *last; 42 }; 43 //#include "LinkedCircList.hpp" 44 #endif