第一章 基础数据结构
1.1顺序表
定义与特性:
1.顺序表的内存空间是一连串连续的地址空间
2.需要一个唯一的表名来表示
3.数据在顺序表中按先后顺序排列
顺序表的声明:
const int defaultsize=10;
template <typename DataType> class Seqlist;
{
public:
Seqlist(int size=defaultsize){
if(size>0)
{
maxSize=size;
elements=new DataType[maxsize];
}
}//构造函数
~Seqlist()
{
delete[] elements;
}
private:
DataType *elements;
int maxSize;
};
顺序表的基本操作:
插入操作
删除操作
查找操作
获取操作
修改操作
将原定义改为:
const int defaultsize=10;
template <typename DataType> class Seqlist;
{
public:
Seqlist(int size=defaultsize){
if(size>0)//检查大小是否合法
{
maxSize=size;
elements=new DataType[maxsize];
}
}//构造函数
~Seqlist()
{
delete[] elements;
}
bool insertElement(Datatype data);
bool deleteElement(int location);
Datatype getElement(int location);
bool changeElement(int location,DataType newData);
private:
DataType *elements;
int maxSize;
int length;
};
插入操作 insertElement
template<typename Datatype> bool Seqlist<Datatype>::insertElement(Datatype data)
{
int currentIndex=length;
if(length>=maxsize)
{
return false;
}
else
{
elements[currentIndex]=data;
length++;
return true;
}
}
代码思路如下:1.检查顺序表是否已满,若满拒绝插入操作
2.如果未满,将新元素插入表尾空间中
删除操作 deleteElement
删除指定位置的元素
template <typename Datatype> bool Seqlist<Datatype>::deleteElement(int location)
{
if(location>=length || location<0)
{
return false;
}
else
{
for(int i=location;i<length;i++)
{
elements[i]=elements[i+1];
}
length--;
return true;
}
}
代码思路如下:
1.找到位置进行删除
2.将后继元素全部向前移动一位
3.获取操作
template <typename Datatype> Datatype Seqlist<Datatype>::getElement(int location)
{
if(location>=length||location<0)
{
std::cout<<"参数无效"<<std::endl;
return 0;
}
else
{
return elements[location];
}
}
4.修改操作
template <typename Datatype> bool Seqlist<Datatype>::changeElement(int location,Datatype newData)
{
if(location<=||location>=length)
{
return false;
}
else
{
elements[location]=newData;
return true;
}
}
实例运用与分析
1.1用C++实现一个顺序表,使其可以存储10个整形数据,并可以实现插入删除和输出整个顺序表的功能