顺序表的基本操作

1.顺序表的初始化:

template<class T>    //构造函数初始化
SqeList<T>::SqeList(int size)
{

MaxSize=size;

length=0;

element=new T[MaxSize];

}   //算法时间复杂度O(1);

2.创建表操作

template<class T>    //深度复制构造函数
SqeList<T>::SqeList(const SqeList<T> &list)
{
   MaxSize=list.MaxSize;
   length=list.length;
   element=new T[MaxSize];
   for(int i=0;i<length;i++)
     element[i]=list.element[i];
}  //时间复杂度为O(n)

3.查找指定元素

template<class T>
int SqeList<T>::LoacElem(int value)const
{
  int i=0;
  while(i<length)   //查找范围
 {
   if(element[i]==value)   //找到value
     return i+1;
   i++;
 }
   return 0;   //查找失败
}  //时间复杂度O(n)

4.取元素操作

template<class T>
bool SqeList<T>::GetElem(int k,T &val)const
{
  if(k>=1&&k<=length)
   {
      val=element[k-1];
       return true;
    }
   return false;
}  //时间复杂度为O(1)

5.插入元素

template<class T>
bool SqeList<T>::InsertList(int k,T val)
{
  if(k<0&&k>length+1)
    std::cout<<"要插入位置不在范围内."<<std::endl;
  if(length==MaxSize)
    std::cout<<"当前表已满."<<std::endl;

  for(int i=length-1,i>k-1;i--)
  {
     element[i+1]=element[i];  //插入位置后面的元素往后移动
  }
   element[k-1]=val;   //val插入表中
   length++;    //表的长度+1
   return true;
 } //时间复杂度为O(n)

6.删除元素

template<class T>
bool SqeList<T>::DeteleList(int k,T &val)
{
  if(k<0&&k>length)
    std::cout<<"要删除的元素不在范围内."<<std::endl;
   if(isEmpty())
   std::cout<<"当前表为空,没有元素可以操作."<<std::endl;

   val=element[k-1]   //删除元素
   for(int i=0;i<length;i++)
     element[i-1]=element[i];   //将后面元素往前移动
   length--;   //表长度-1
   return true;
 }//时间复杂度为O(n)s

7.判断是否为空表

template<class T>
bool SqeList<T>::isEmpty()
{
  if(length==0)
    return true;
  else
    return false;
}

8.输入操作

template<class T>
istream& operator>>(istream &in,const SqeList<T> &List)
{
  int spaceMax,listNum;
  cout<<"输入顺序表的最大空间数"<<endl;
  in>>spaceMax;
  cout<<"输入顺序表的元素个数"<<endl;
  in>>listNum;
  cout<<"请依次输入"<<listNum<<"个元素"<<endl;
  List.MaxSize=spaceMax;
  List.length=listNum;
  List.element=new T[List.MaxSize];
  for(int i=0;i<List.length;i++)
  { 
    in>>element[i];
  }
  return in;
} //时间复杂度为O(n)

9.输出操作

template<class T>
ostream& operator<<(ostream &os,const SqeList<T> &List)
{
  out<<"输出顺序表中的元素."<<endl;
  for(int i=0;i<List.length;i++)
    out<<List.element[i]<<"  ";
  return out;
} //时间复杂度为O(n)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值