📄 seqlist.h
字号:
#include "LinearList.h"
enum ResultCode{UnderFlow,OverFlow,Success,Duplicate,NotPresent};
template <class T>
class SeqList:public LinearList<T>
{
public:
SeqList(int mSize);
~SeqList() {delete []elements;}
bool Insert(T x);
void Output(ostream& out)const ;
bool Update(int i,T x);
bool Find(int i,T &x)const;
int Search(T x)const;
void Reverse();
void DeleteX(const T &x);
ResultCode Search1(T x)const;
private:
int maxLength; //顺序表的最大长度
T *elements; //动态一维数组的指针
};
template <class T>
SeqList<T>::SeqList(int mSize)
{
maxLength=mSize;
elements=new T[maxLength]; //动态分配顺序表的存储空间
n=0;
}
template<class T>
bool SeqList<T>::Insert(T x) //更改的插入函数
{
if (n== maxLength) //判断n是否与maxLength相等
{
T *a; //新建数组
a=new T[maxLength];
for(int j=0;j<maxLength;j++ ) //将elements中数值都拷贝到a中
a[j]=elements[j];
maxLength=2*maxLength; //将最大容量翻倍
delete []elements; //删除原来的elements数组
elements=new T[maxLength]; //重新建立新的elements数组
for(j=0;j<maxLength/2;j++)
elements[j]=a[j]; //复制原来的数值至新的elements中
delete []a; //删除a
}
elements[n]=x;
n++; // Output(cout);
return true;
}
template <class T>
void SeqList<T>::Output(ostream& out)const
{
for (int i=0;i<n;i++)
{
out<<elements[i];
if((i+1)%60==0)
out<<endl;
}
out<<endl;
}
template<class T>
bool SeqList<T>::Update(int i,T x)
{
if(i>=n || i<-1) return false;
else
{
elements[i]=x;
return true;
}
}
template<class T>
bool SeqList<T>::Find(int i,T &x)const
{
if(i<-1 || i>=n)
return false;
else
{
x=elements[i];return true;
}
}
template<class T>
int SeqList<T>::Search(T x)const
{
for(int i=0;i<n;i++)
if(elements[i]==x)
return i;
return -1;
}
template<class T>
void SeqList<T>::Reverse() //顺序表逆置
{
T a;
for(int i=0;i<n/2;i++)
{
a=elements[i];
elements[i]=elements[n-i-1];
elements[n-i-1]=a;
}
}
template<class T>
void SeqList<T>::DeleteX(const T &x) //删除x
{
for(int i=0;i<n;i++)
if(elements[i]==x)
{
for(int j=i;j<n-1;j++)
{
elements[j]=elements[j+1];
}
elements[n]=NULL;
n--;
}
}
template<class T>
ResultCode SeqList<T>::Search1(T x)const //搜索元素
{
for(int i=0;i<n;i++)
if(elements[i]==x)
return Success;
return NotPresent;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -