顺序表--数组

来源:互联网 发布:数据库 索引 编辑:程序博客网 时间:2024/06/09 19:55

 template <class T>
class SqList
{
public:
 SqList(int Max);
 ~SqList()
 {
  delete[] Data;
 }
 int Locate(const T&x) const; //返回数组中元素x的位置
 int Insert(int k,const T&x);//在数组中k处插入元素x
 int Delete(int k,T&x);//从数组中删除k处的元素x
private:
 int n; //数组当前现存元素个数
 int MaxSize; //数组最大元素个数
 int last;//数组最后一个元素的下标
 T *Data;
};

 

#include "SqList.h"
template <class T>
SqList<T>::SqList(int Max)
{
 MaxSize=Max;
 T Data=new T[MaxSize];//数组的类型为T
    last=-1; //last用于指向数组的最后一个元素,初始化为-1
}
//寻找元素x的位置
template<class T>
int SqList<T>::Locate(const T&x) const //T 代表数组中元素的类型
{
//返回表中元素x的位置
 int i=0;
 while (i<=last&&x!=Data[i])
 {
  i++;
 }
 if (i>last)
 {
  return -1;
 }
 else
 {
  return i;
 }
}
//插入元素
template<class T>
int SqList<T>::Insert(int k,const T&x)
{
 //在表的位置k处插入元素x
 if ((k<0||k>last+1)||last==MaxSize-1) //last==MaxSize-1 判断最后一个元素的下标是否有超过最大元素,MaxSize-1因为下标是从0开始的 (在顺序插入之前必须判断表有没有满)
 {
  return 0;
 }
 else
 {
  last++;
  for(int i=last;i>k;i--)
  {
   Data[i]=Data[i-1];
  }
  Data[k]=x;
  return 1;
 }
}
template<class T>
int SqList<T>::Delete(int k,T&x)
{
 if (k<0||k>last)
 {
  return 0;
 }
 else
 {
  last--;
  for (int i=k;i>last;i++)
  {
   Data[i]=Data[i+1];
  }
  return 1;
  {
  }
 }
}

int main()
{

}

 

原创粉丝点击