template <class elemtype>
class seqlist:public list<elemtype>
{ private : elemtype *data;int maxsize;
int currentlength;
void doublepace();
public:
seqlist(int initsize=10};
~seqlist( ) { delete []data;}
void clear () {currentlength =0;}
void insert (int i,elemtype&x);
void remove(int i);
void search (const elemtype &x);
elemtype visit(int i) {return data[i]};
void traverse()const;
template <class elemtype>
void seqlist<elemtype >::doublespace()
{elemtype *tmp=data;
maxsize*=2;
data=new elemtype [maxsize];
for (int i=0,i<currentlength;i++)
data [i]=tmp[i];
delete []tmp;
}
template <class elemtype>
seqlist<elemtype>::seqlist(int initsize)
{
data=new elemtype [initsize];
maxsize=initsize;
currentlength=0;}
template <class elemtype>
void seqlist<elemtype>::insert(int i,cosnt elemtype&x)
{ if (currentlength=maxsize) doublespace();
for(int j=currentlength;j>i;j--)data[j]=data[j-1];data[i]=x;++currentlength;}
template <class elemtype>
void seqlist<elemtype>::remove(int i)
{ for (int j=i;j<currentlength-1;j++;)data[j]=data[j+1];
--currentlength;}
template <class elemtype>
void seqlist<list>::search(elemtype&x)
{
for(int i=0;i<currentlength;i++)
{if (data[i]==x) return i;
else return -1;}
template <class elemtype>
void seqlist <elemtype> ::traverse()
{cout <<endl;
for (int i=0,i<currentlength;i++)cout<<data[i]<<";}