顺序表
1.线性表
线性表:是N(N>=0)个数据元素组成的有限序列k0,k1,...,kn-1。
线性表中的各个数据元素要求是同一种数据类型。数据元素相同的线性表又称为数组或向量。数据元素不同类型的线性表可通过建立索引表后,转化为数据元素相同的线性表处理。
线性表的基本运算:
(1)表的初始化,即生成一个空表。
(2)判断表是否为空,即表结点个数是否为0。
(3)判断表是否已满,即表结点个数是否为最大允许个数。
(4)求表长,即求表中结点个数。
(5)取表中第i个结点。
(6)查找表中值为x的结点。
(7)在表中第i个位置上插入一个新的结点。
(8)删除表中的第i个结点。
线性表的类的表示:
#include<iostream>
#include<string>
enum boolean{FALSE,TURE};
template<class T>
class LinearList //申请线性表的一个类
{
private:
T *data; //线性表以数组形式存放
int MaxSize; //表空间最大范围
int Last; //表长
public:
LinearList(int MaxSize = defaultSize);
~LinearList(void);
boolean ListEmpty(void);
boolean ListFull(void);
int ListLength(void)const;
T GetElem(int i);
int LocateElem(T&x)const;
int InsertElem(T&x,int i);
int DeleteElem(int i);
};
template<class T>
LinearList<T>::LinearList(int sz)
{
if(sz>0)
{
MaxSize=sz;
Last=0;
data=new T[MaxSize]; //创建表空间
}
}
template<class T>
LinearList<T>::~LinearList(void)
{
delete[]data;
}
template<class T>
boolean LinearList<T>::ListEmpty(void) //判断线性表是否为空
{
return(Last>=MaxSize)?TRUE:FALSE;
}
template<class T>
boolean LinearList::ListLength(void)const //求线性表的长度
{
return Last;
}
template<class T>
T LinearList<T>::GetElem(int i) //求线性表中的结点的值
{
return(i<0||i>Last)?NULL:data[i];
}
template<class T>
int LinearList<T>::LocateElem(T&x)const
{
for(int i=0;i<Last;i++)
if(data[i]==x)return i;
return -1;
}
template <class T>
boolean LinearList<T>::InsertElem(T&x,int i) //插入值为x的结点
{
if(i<0||i>Last==MaxSize)
return FALSE;
else
{
for(int j=Last;j>i;j--)
data[j]=data[j-1];
data[i]=x;
Last++;
return TRUE;
}
}
template <class T>
boolean LinearList<T>::DeleteElem(int i) //删除线性表第i个结点
{
if(i<0||i>Last||Last==0)
return FALSE;
else
{
for(int j=i;j<Last-1;j++)data[j]=data[j+1];
Last--;
return TRUE;
}
}