#include<iostream>
using namespace std;
const int MAX=100;
template <typename T>
class SeqList
{
private:
T data[MAX];
int list;//指向最后一个元素的位置
public:
SeqList();//初始化
//使用的是数组 T data[MAX],这是一个静态分配的数组,不需要使用 new 进行动态内存分配。
T FindKth(int key);//返回对应位置元素
int Find(T elem);//查找对应元素位置
bool Insert(int key,T elem);//插入
bool Delete(int key);//删除
int Length();//返回长度
void Print();//输出
};
template <typename T>
SeqList<T>::SeqList(){
list=-1;
}
template <typename T>
int SeqList<T>::Find(T elem){
int i=0;
while (i<=list && data[i]!=elem) i +=1;
if (i > list) return -1;
else return i+1;
}
template <typename T>
T SeqList<T>::FindKth(int key){
if (key >list+1 || key < 0)
{
return 0;
}
return data[key];
}
template <typename T>
bool SeqList<T>::Insert(int key,T elem){
if (key <1 || key > list+2 || list==MAX-1)
{
//位置不合法+表满
return 0;
}
for (int i = list; i >= key; i--)
{
data[i+1]=data[i];
}
data[key]=elem;
list +=1;
return -1;
}
template <typename T>
int SeqList<T>::Length(){
return list+1;
}
template <typename T>
bool SeqList<T>::Delete(int key){
//合法性检查:
if (key > list+1 || key<1)
{
return 0;
}
for (int i = key; i <= list; i++)
{
data[i-1]=data[i];
}
list -=1;
return 1;
}
template <typename T>
void SeqList<T>::Print(){
for (int i = 0; i <= list; i++)
{
cout<<data[i]<<" ";
}
cout<<endl;
}
int main(){
SeqList<int> ls;
for (int i = 0; i < 5; i++)
{
ls.Insert(i,i);
}
cout<<ls.Length()<<endl;
ls.Print();
ls.Delete(2);
ls.Print();
cout<<ls.Find(4)<<endl;
cout<<ls.FindKth(1)<<endl;
}