【C++算法与数据结构学习笔记------线性表】用数组实现表

一个简单的实现例子,只用到了插入函数以及输出函数,初始化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 }