头文件:

 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
View Code

相关文章: