数据结构自学之路----顺序表

#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;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小胖墩有点瘦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值