#include <iostream>
using namespace std;
/************************************************************************/
/* 数据结构顺序表的基本操作 */
/************************************************************************/
template<typename DataType>
class SqeList
{
private:
static const int defaultsize=10;
DataType *element; //设置数组
int maxsize; //设置数组最大大小
int length; //设置数组有效长度
public:
SqeList(int size=defaultsize){ //构造函数,设置默认大小
if (size>0) //判断数组是否符合规范
{
maxsize=size; //初始化
length=0; //初始化
element=new DataType[maxsize]; //动态分配数组大小
for (int i=0;i<maxsize;i++)
{
element[i]=0; //将数组进行初始化
}
}
}
~SqeList(){
delete[]element; //析构函数将动态分配的内存释放
}
int getlength(){
return length;
}
bool insertElement(DataType data); //插入元素函数
bool deleteElement(int location); //删除元素函数
DataType getElement(int location); //获取指定元素函数
bool changeElement(int location,DataType data); //修改元素函数
};
/***************插入元素函数***********************/
template<typename DataType>
bool SqeList<DataType>::insertElement(DataType data){
int currentIndex=length; //设置末尾为插入下标
if (length>=maxsize)
{
return false;
}else{
element[currentIndex]=data;
length++; //插入元素后的数组长度增加
return true;
}
}
/****************删除元素函数**********************/
template<typename DataType>
bool SqeList<DataType>::deleteElement(int location){
if(location>=length||location<0){
return false;
}else{
for (int i=location;i<length;i++)
{
element[i]=element[i+1]; //被删除的数组后的数据左移
}
length--; //删除的数组长度减少
return true;
}
}
/*****************获取指定元素函数*********************/
template<typename DataType>
DataType SqeList<DataType>::getElement(int location){
if (location>=length||location<0)
{
return 0;
}else{
return element[location];
}
}
/*****************修改元素函数****************/
template<typename DataType>
bool SqeList<DataType>::changeElement(int location,DataType data){
if (location>=length||location<0)
{
return false;
}else{
element[location]=data;
return true;
}
}
/************************主函数********************/
void main()
{
SqeList<int> list(10);
for (int i=0;i<10;i++)
{
list.insertElement(i*10); //插入10个元素
}
for (int i=0;i<list.getlength();i++)
{
cout<<list.getElement(i)<<" "; //获取元素
}
cout<<endl;
list.deleteElement(3); //删除第三个元素
for (int i=0;i<list.getlength();i++)
{
cout<<list.getElement(i)<<" ";
}
cout<<endl;
list.changeElement(2,729); //修改第2个元素
for (int i=0;i<list.getlength();i++)
{
cout<<list.getElement(i)<<" ";
}
cout<<endl;
}
数据结构自学之路----顺序表
最新推荐文章于 2024-05-04 19:41:57 发布