#include<iostream>
using namespace std;
template<class T>
class SqList
{
private:
T *elem;
int length;
int listsize;
public:
SqList(int m);
~SqList();
void CreateList(int n);
void Insert(int i,T e);
T Delete(int i);
T GetElem(int i);
int Locate(T e);
void Clear();
int Empty();
int Full();
int Length();
void ListDisp();
};
template<class T>
SqList<T>::SqList(int m)
{
elem=new T[m];
if(!elem)throw"内存分配失败!";
length=0;
listsize=m;
}
template<class T>
SqList<T>::~SqList()
{
delete [] elem;
length=0;
listsize=0;
}
template<class T>
void SqList<T>:: CreateList(int n)
{
length=n;
cout<<"请输入链表的数值!"<<endl;
for(int i=0;i<length;i++)
cin>>elem[i];
}
template<class T>
T SqList<T>::GetElem(int i)
{
if(i-1<0)throw"没有该元素!";
cout<<"链表中第"<<i<<"的值为"<<elem[i-1]<<endl;
}
template<class T>
void SqList<T>::Insert(int i,T e)
{
if(length>=listsize)throw"上溢";
if(i<0||i>length+1)throw"插入位置异常";
for(int j=length;j>=i;j--)
{
elem[j]=elem[j-1];
}
elem[i-1]=e;
length++;
}
template<class T>
T SqList<T>::Delete(int i)
{
if(length<0)throw"下溢";
if(i<0||i>length+1)throw"删除位置异常";
T e=elem[i-1];
for(int j=i;j<length;j++)
elem[j-1]=elem[j];
length--;
return e;
}
template<class T>
int SqList<T>::Locate(T e)
{
for(int i=0;i<length;i++)
{
if(elem[i]==e)
return i+1;
return 0;
}
}
template<class T>
void SqList<T>::Clear()
{
for(int i=0;i<n;i++)
elem[i]=0;
}
template<class T>
int SqList<T>::Empty()
{
for(int i=0;i<length;i++)
if(elem[i]!=0)return 0;
return 1;
}
template<class T>
int SqList<T>::Full()
{
if(length==listsize)
return 1;
else
return 0;
}
template<class T>
int SqList<T>::Length()
{
return length;
}
template<class T>
void SqList<T>::ListDisp()
{
for(int i=0;i<length;i++)
cout<<"表中的第"<<(i+1)<<"个值为"<<elem[i]<<endl;
}
//void main()
//{
// int m,n;
// cout<<"请输入链表的容量"<<endl;
// cin>>m;
// cout<<"请输入链表的长度"<<endl;
// cin>>n;
// SqList<int> sl(m);
// sl.CreateList(n);
// cout<<"请输入插入的位置"<<endl;
// cin>>m;
// cout<<"请输入插入的元素"<<endl;
// cin>>n;
// cout<<"该元素的长度为"<<sl.Length()<<endl;
// sl.Insert(m,n);
// sl.ListDisp();
// cout<<"请输入元素的位置!"<<endl;
// cin>>m;
// sl.GetElem(m);
// cout<<"该元素的长度为"<<sl.Length()<<endl;
// cout<<"要删除的元素为"<<sl.Delete(n)<<endl;
// sl.ListDisp();
//}