#include <iostream>
using namespace std;
template<class T>
class SeqList
{
protected:
T *element;//动态数组存储顺序表的数据元素
int length;//顺序表的数组容量
int n;//顺序表的个数
public:
void init(T values[],int n)//初始化顺序表
{
this->length=n*2;//开辟2n的空间
this->element=new int[this->length];
this->n=n;
for (int i=0;i<n;i++)
{
this->element[i]=values[i];//执行int的赋值,
}
}
SeqList(int length=32)//构造空表
{
this->element=new int[length];
this->length=length;
this->n=0;
}
SeqList(int length,int x)//构造顺序表
{
this->element=new int[length];
this->length=this->n=length;
if (int i=0;i<this->n;i++)
{
this->element[i]=x;
}
}
SeqList(int values[],int n )//构造顺序表 由values提供元素 n为个数
{
this->init(values,n);
}
bool empty()//判断顺序表是否为空
{
return this->n==0;
}
int count()//返回顺序表元素个数
{
return this->n;
}
void DispList()//输出元素
{
cout << "Out:" << endl;
for(int i=0; i<length; i++){
cout << element[i] << " ";
}
cout << endl;
}
void insert(int i,T x)//在第i个元素插入
{
if(i<0)i=0;
if(i>this->n) i=this->n;
T*temp=this->element;
for(int j=this->n-1;j>=i;j--)
this->element[j+1]=temp[j];
if(temp!=this->element)
delete[]temp;
this->element[i]=x;
this->n++;
}
void insert(T x)//在末尾插入
{
insert(this->n,x);
}
int serch(T key,int str)//查找
{
for(int i=str;i<this->n;i++)
if(this->element[i]==key)
return i;
return -1;
}
int remove(int i)//删除第i个元素
{
for(int j=i;j<this->n;j++)
this->element[j]=this->element[j+1];
return 0;
}
};
void main()
{
SeqList <int> Seql;
int xy[10]={1,2,3,4,5,6,7,8,9,10
};
Seql.init(xy,10);
Seql.DispList();
Seql.insert(2,9);
Seql.DispList();
Seql.insert(10);
Seql.DispList();
cout<<Seql.serch(8,3)<<endl;
Seql.remove(4);
Seql.DispList();
}