一个简单的实现例子,只用到了插入函数以及输出函数,初始化26个英文字母。
1 #include <iostream> 2 using namespace std; 3 template <typename T> 4 class List{ 5 public: 6 List(int max_list_size=10); //构造函数 7 ~List(){delete [] data;} //析构函数 8 bool empty()const {return 0==n;} //判断表是否为空 9 int size()const {return n;} //返回表的大小 10 int locate(const T& x)const; //返回表中元素X的位置 11 bool retrieve(int k,T& x)const; //返回表中第K个元素X 12 List <T>& insert(int k,const T& x); //在表的位置K插入元素X 13 List <T>& erase(int k); //从表中删除位置K处的元素X 14 void print_list(); //输出表 15 private: 16 int n; //记录表长 17 int max_size; //表的最大长度 18 T *data; //记录表中的数组 19 }; 20 template <typename T> 21 List<T>::List(int max_list_size) 22 { 23 max_size=max_list_size; 24 data=new T[max_size]; 25 n=0; 26 } 27 template <typename T> 28 int List<T>::locate(const T& x)const 29 { 30 for(int i;i<n;i++) 31 { 32 if (data[i]==x) return ++i; 33 return 0; 34 } 35 } 36 template <typename T> 37 bool List<T>::retrieve(int k,T& x)const 38 { 39 if (k<1||k>n) return false; 40 x=data[k-1]; 41 return true; 42 } 43 template <typename T> 44 List <T>& List<T>::insert(int k,const T& x) 45 { 46 for(int i=n-1;i>=k;i--) 47 data[i+1]=data[i]; 48 data[k]=x; 49 n++; 50 return *this; 51 } 52 template <typename T> 53 List <T>& List<T>::erase(int k) 54 { 55 for(int i=k;i<n;i++) 56 data[i-1]=data[i]; 57 n--; 58 return *this; 59 } 60 template <typename T> 61 void List<T>::print_list() 62 { 63 for(int i=0;i<n;i++) 64 cout <<data[i] <<" "; 65 } 66 int main() 67 { 68 int s1,s2; 69 List<char> s(30); 70 s1='A'; 71 s2='Z'; 72 for(int i=s2;i>=s1;i--) 73 s.insert(0,i); 74 s.print_list(); 75 return 0; 76 }
|
请发表评论