线性表的顺序存储结构(顺序表)
#include<iostream>
using namespace std;
定义类:
const int Maxsize=100;
template<typename ElemType>
class SeqList
{
public:
SeqList(){length=0;}
SeqList(ElemType a[],int n);
~SeqList(){}
int Length(){return length;}
ElemType Get(int i);
int Locate(ElemType x);
void Insert(int i,ElemType x);
ElemType Delete(int i);
void PrintList();
private:
ElemType data[Maxsize];
int length;
};
函数1:有参构造函数SeqList(ElemType a[],int n)
template<typename ElemType>
SeqList<ElemType>::SeqList(ElemType a[],int n)
{
if(n>Maxsize) throw "参数非法";
for(int i=0;i<n;i++)
{
data[i]=a[i];
}
length=n;
}
function Get(int i)
template<typename ElemType>
ElemType SeqList<ElemType>::Get(int i)
{
if(i<1||i>length) throw "查找位置非法";
else return data[i-1];
}
function Locate(ElemType x)
template<typename ElemType>
int SeqList<ElemType>::Locate(ElemType x)
{
for(int i=0;i<length;i++)
{
if(data[i]==x)
return i+1;
return 0;
}
}
function Insert(int i,ElemType x)
template<typename ElemType>
void SeqList<ElemType>::Insert(int i,ElemType x)
{
if(length==Maxsize) throw "线性表已满";
if(i<0||i>length+1) throw "位置异常";
for(int j=length;j>=i;j--)
{
data[j]=data[j-1];
}
data[i-1]=x;
}
function Delete(int i)
template<typename ElemType>
ElemType SeqList<ElemType>::Delete(int i)
{
if(length==0) throw "线性表空";
if(i<0||i>length) throw "位置异常";
ElemType tmp=data[i-1];
for(int j=i;j<length;j++)
{
data[j]=data[j-1];
}
return tmp;
}
function PrintList()
template<typename ElemType>
void SeqList<ElemType>::PrintList()
{
for(int i=0;i<length;i++)
{
cout<<data[i]<<" ";
}
}