#include #include #include #include class Vec { private: int *v; int LEN; int USED; void expand(); void shrink(); public: Vec(int len); int get(int a); void put(int a,int value); void swap(int a, int b); int insert(int locate,int value); int del(int locate,int value); int find(int value); void printall(); int getlen(); int getused(); }; Vec::Vec(int len) { LEN=len*2; v=new int[LEN]; USED=9; for(int i=0;i<10;i++) v[i]=i+1; for(int i=0;i<10;i++) swap(i,rand()%10); } int Vec::get(int a) { return v[a]; } void Vec::put(int a,int value) { v[a]=value; } void Vec::swap(int a, int b) { int temp = v[a]; v[a] = v[b]; v[b] = temp; } void Vec::expand() { LEN=LEN*2; int *p=new int[LEN]; for(int i=0;i<=USED;i++) p[i]=v[i]; delete[] v; v=p; } void Vec::shrink() { LEN=LEN>>1; int *p=new int[LEN]; for(int i=0;i<=USED;i++) p[i]=v[i]; delete[] v; v=p; } int Vec::insert(int locate,int value) { if(locate<0||locate>USED) return 1; USED++; if(USED>=LEN) expand(); for(int i=USED;i>locate;i--) v[i]=v[i-1]; v[locate]=value; return 0; } int Vec::del(int locate,int value) { if(locate<0||((USED-value)<0)||((locate+value-1)>USED)) return 1; USED=USED-value; for(int i=locate;i<=USED;i++) v[i]=v[i+value]; if( ( (double)USED/(double)LEN )<=0.3 ) shrink(); return 0; } int Vec::find(int value) { int i = 0; for(i;i<=USED;i++) { if(v[i]==value) { return i; } } return -1; } int Vec::getlen() { return LEN; } int Vec::getused() { return USED; } void Vec::printall() { for(int i=0;i