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 }