1 #include <iostream>
  2 using namespace std;
  3 
  4 template <typename type>
  5 class Seqlist
  6 {
  7 private:
  8     type * data;
  9     int length;
 10     int MAXSIZE;
 11 public:
 12     Seqlist()
 13     {
 14         data = new type[0];
 15         length = 0;
 16         MAXSIZE = 0;
 17     }
 18 
 19     Seqlist(int size)
 20     {
 21         data = new type[size];
 22         length = 0;
 23         MAXSIZE = size;
 24     }
 25 
 26     void increment(int incrementsize)
 27     {
 28         MAXSIZE += incrementsize;
 29         type * temp = new type[MAXSIZE];
 30         for (int i = 0; i < length; ++i)
 31         {
 32             temp[i] = data[i];
 33         }
 34         delete[] data;
 35         data = temp;
 36         temp = NULL;
 37     }
 38 
 39     void append(type args)
 40     {
 41         if (length >= MAXSIZE)
 42             increment(1);
 43         data[length] = args;
 44         length ++;
 45     }
 46 
 47     int index(type args)
 48     {
 49         for (int i = 0;i < length;i ++)
 50             if (data[i] == args)
 51                 return i;
 52         return 0;
 53     }
 54 
 55     void insert(type args,int index)
 56     {
 57         if (length >= MAXSIZE)
 58             increment(1);
 59         for (int i = length;i > index;i --)
 60         {
 61             data[i] = data[i-1];
 62         }
 63         data[index] = args;
 64         length ++;
 65     }
 66 
 67     void remove(int index)
 68     {
 69         for (int i = index - 1;i < length;i ++)
 70         {
 71             data[i] = data[i+1];
 72         }
 73         length --;
 74     }
 75 
 76     void erase(type args)
 77     {
 78         int indx = index(args);
 79         for (int i = indx - 1;i < length;i ++)
 80         {
 81             data[i] = data[i+1];
 82         }
 83         length --;
 84     }
 85 
 86     void replace(type before,type after)
 87     {
 88         int indx = index(before);
 89         data[indx] = after;
 90     }
 91     
 92     void clear()
 93     {
 94         length = 0;
 95         MAXSIZE = 0;
 96         delete[] data;
 97         data = NULL;
 98     }
 99 
100     void sort()
101     {
102         for (int i = 0;i < length - 1;i ++)
103         {
104             for (int j = 0;j < length - 1 - i;j ++)
105             {
106                 if (data[j] > data[j + 1])
107                 {
108                     type temp = data[j];
109                     data[j] = data[j + 1];
110                     data[j + 1] = temp;
111                 }
112             }
113         }
114     }
115 
116     void reserve()
117     {
118         for (int i = 0;i < (length / 2);i ++)
119         {
120             type temp = data[i];
121             data[i] =  data[length - i - 1];
122             data[length - i - 1] = temp;
123         }
124     }
125     
126     void copy(Seqlist &b)
127     {
128         length = b.length;
129         MAXSIZE = b.MAXSIZE;
130         for (int i = 0;i < b.length;i ++)
131             data[i] = b.data[i];
132     }
133     
134     Seqlist operator +(Seqlist &b)
135     {
136         cout<<b.length<<endl;
137         int digit = b.length;
138         for (int i = 0;i < digit;i ++)
139         {
140             append(b[i]);
141         }
142         return *this;
143     }
144     bool operator==(Seqlist &b)
145     {
146         if (length != b.length)
147             return false;
148         for (int i = 0;i < length;i ++)
149             if (data[i] != b.data[i])
150                 return false;
151         return true;
152     }
153 
154     type operator[](int index)
155     {
156         return data[index];
157     }
158 
159     void operator=(Seqlist &b)
160     {
161         data = b.data;
162         length = b.length;
163         MAXSIZE = b.MAXSIZE;
164     }
165     
166     type * address()
167     {
168         return data;
169     }
170 
171     void show()
172     {
173         for (int i = 0; i < length; ++i)
174         {
175             cout << data[i]<<" ";
176         }
177         cout << endl;
178     }
179 
180 };
181 
182 int main(int argc, char *argv[])
183 {
184     return 0;
185 }