#include<iostream>
using namespace std;
const int MAXSIZE = 20;
template <class T>
class SqList{
private:
T *data;
int length;
public:
SqList(); //构造函数
~SqList(); // 析构函数
void CreatList(T a[], int n); //创建顺序表
void Display(); //输出顺序表中所有元素
int GetLength(); //获取顺序表的长度
bool GetElem(int, T &elem); // 获取顺序表中的某个元素
bool ListInsert(int i, T elem); // 插入元素
bool ListDelete(int i, T &elem); //删除元素
};

template<class T>
SqList<T>::SqList(){
cout<<"constract ok"<<endl;
data = new T[MAXSIZE];
length = 0;
}

template<class T>
SqList<T>::~SqList(){
cout<<"No"<<endl;
delete [] data;
}

template<class T>
void SqList<T>::CreatList(T a[], int n){
for(int i = 0; i < n; i++){
data[i] = a[i];
}
length = n;
cout<<"create SqList success!"<<endl;
}

//获取顺序表的长度
template<class T>
int SqList<T>::GetLength(){
return length;
}

//获取指定元素
template<class T>
bool SqList<T>::GetElem(int i, T &e){
if(length == 0 || i < 1 || i > length){
return false;
}
e = data[i-1];
return true;
}

//插入元素
template<class T>
bool SqList<T>::ListInsert(int i, T e){
if(length == MAXSIZE) //保证插入位置正确
return false;
if(i < 1 || i > length+1)
return false;
if(i < length){
for(int k = length-1; k >= i-1; k--) //将插入位置之后的元素都向后移动一个位置
data[k+1] = data[k];
}
data[i-1] = e; //将待插入的元素赋值给插入位置
length++; //将顺序表的长度增加一个
return true;
}

//删除元素
template<class T>
bool SqList<T>::ListDelete(int i, T &e){
if(length == 0) //保证删除位置正确
return false;
if(i < 1 || i > length)
return false;
e = data[i-1]; //将要删除的元素保存给 e
if(i < length){
for(int k = i; k < length; k++){ //将删除位置后面的元素都向前移动一个位置
data[k-1] = data[k];
}
}
length--; //将顺序表的长度删除一个
return true;
}

template<class T>
void SqList<T>::Display(){
cout<<"display SqList:";
for(int i = 0; i < length; i++){
cout<<data[i]<<"\t";
}
cout<<endl;
}
//堆中创建对象
int main(){
SqList<int> *sqlist = new SqList<int>();
int arr[5] = {3, 4, 5, 6, 7};
sqlist->CreatList(arr, 5);
sqlist->Display();
cout<<"get element length is :"<<sqlist->GetLength()<<endl;
int a;
sqlist->GetElem(2, a);
cout<<"get element is : "<<a<<endl;
sqlist->ListInsert(2, 100);
sqlist->Display();
int b;
sqlist->ListDelete(2, b);
cout<<"delete element is : "<<b<<endl;
sqlist->Display();
delete sqlist;
return 0;
}
//栈中创建对象
int main01(){
SqList<int>sqlist;
int arr[5] = {3, 4, 5, 6, 7};
sqlist.CreatList(arr, 5);
sqlist.Display();
cout<<"get element length is :"<<sqlist.GetLength()<<endl;
int a;
sqlist.GetElem(2, a);
cout<<"get element is : "<<a<<endl;
sqlist.ListInsert(2, 100);
sqlist.Display();
int b;
sqlist.ListDelete(2, b);
cout<<"delete element is : "<<b<<endl;
sqlist.Display();
// delete sqlist;
return 0;
}

ps: 顺序表的三种代码实现过程都写完了,其中有学习到了一点新的知识!不错!有问题欢迎指正哦 ^_^