数据结构c++顺序表的实现及相关操作

顺序表的实现

const int MaxSize=100                  //根据实际问题具体定义
template<typename DataType>            //定义模板类SeqList
class SeqList
{
    
    
public:
   SeqList();                       //建立空的顺序表
   SeqList(DataType a[],int n);       //建立长度为n的顺序表
   ~SeqList();                        //析构函数
   int Length();                   //求线性表的长度
   DataType Get(int i);              //按位查找,查找第i位的元素的值
   int Locate(DataType x);           //按值查找,查找值为x的元素的序号
   void Insert(int i,DataType x); //插入操作,在第i位插入值为x的元素
   DataType Delete(int i);           //删除操作,删除第i位的元素
   int Empty();                      //判断线性表是否为空
private:
   DataType data[MaxSize];           //存放数据元素的数组
   int length;                       //线性表的长度
}

1.无参构造函数——初始化顺序表

只需将顺序表的长度length初始化为0。

2.有参构造函数——建立顺序表

template<typename DataType>
SeqList<DataType>::SeqList(DataType a[],int n)
{
    
    
 if(n>MaxSize)
 throw "非法参数";
 for(int i=0;i<n;i++)
     data[i]=i;
 length=n;
 }    

3.析构函数——销毁顺序表

顺序表自动释放空间,所以无需析构,析构为空。

4.判空操作

只需要判断Length是否为0即可。

5.求顺序表的长度

只需要看length的值就可

6.遍历操作

template<typename DataType>
void SeqList<DataType>::PrintList()
{
    
    
 for(int i=0;i<length;i++)
   cout<<data[i]<<"\t";               //依次输出线性表的元素值
 cout<<endl;
}  

7.按位查找

template<typename DataType>
DataType SeqList<DataType>::Get(int i)
{
    
    
  if(i<1 || i>length)
  throw "查找非法位置";
  else
  return data[i-1];
}  
  

8.按值查找

template<typename DataType>
int SeqList<DataType>::Locate(DataType x)
{
    
    
 for(int i=0;i<length;i++)
   if(data[i]==x)
     return i+1;
   else
     return 0;
}  

9.插入操作

template<typename DataType>
void SeqList<DataType>::Insert(int i,DataType x)
{
    
    
  if(i<1 || i>length+1)
  throw "插入位置错误";
  if(length == MaxSize)
  throw "上溢";
  for(int j = length;j>=i;j--)     //将最后一个元素直至第i个元素分别向后移一个位置
      data[j] = data[j-1];
   data[i-1] = x;
   length++;
}         

10.删除操作

template<typename DataType>
DataType SeqList<DataType>::Delete(int i)
{
    
    
  DataType x;
  if(length==0)
  thorow "下溢";
  if(i<1 || i>length)
  throw "删除位置错误";
  x=data{
    
    i-1];
  for(int j=i;j<length;j++)
     data[j-1]=data[j];
  length--;
  return x;
}   

猜你喜欢

转载自blog.csdn.net/qq_51344334/article/details/114446433