简单顺序表的创建以及简单的运用

简单顺序表的创建(C++类的封装)

顺序表是在数组的基础上储存数据的一种方式,数组虽然有删除、查找、插入等基本操作,但没有相应的基本运算符或基本操作函数。
(ps:基本运算符有:关系运算符、逻辑运算符、三目运算符、
位运算符、类型转换(强制性更改数据类型))

话不多说,直接看代码以及相应注解

#include<iostream>
#include<cstdlib>
//包含malloc函数 
using namespace std;
typedef int Type;
/*最基本的顺序表具有三个数据信息 
 1.Type类型(不明类型指针,指向一个动态数组)
 2.自定义数组能储存的数据个数 
 3.数组的容量 (容量大于等于数据个数) 
 */ 
class SeqList
{        
	//成员声明                                  
	public:
	Type * data;//Type具体应用时要提前赋予其一个类型 
	int size;
	int max;
	
	
	
	//其他应用的成员函数声明 
	SeqList(int n)//带参构造函数进行成员初始化 
{
	data=(Type*)malloc(n*sizeof(Type));
	if(data==NULL)
	{
		cout<<"空间分配失败!"<<endl;//空间分配失败的提示 
		exit(1); 
		/*
		exit(0):正常运行程序并退出程序;
		exit(1):非正常运行导致退出程序;
		return :返回函数,若在主函数中,则会退出函数并返回一值。
		*/ 
	 } 
	 size=0;
	 max=n;
}
	~SeqList();//析构函数撤销动态数组空间 
	void InsertRear(Type item);//尾插,即在顺序表尾部加上数据
	void Insert(int id,Type item);//定点插入,即指定位置插入数据
	void Erase(int id);//定点删除,将下标为id的数据删除 
	void Clear();//清表,即清空表内所有数据 
	Type Getdata(int id);//取值,读取下标为id的数据
	int Size();//取数据个数,读取size的值 
	int Empty();//判断是否为空表 
	int Full();//判断是否为满表 
 }; 
 
 
 
//成员函数的定义

//!!!一定不要忘记了作用域!!! 


//析构函数
SeqList::~SeqList()
{
	free(data);
 } 
 
 
//尾插,即在顺序表尾部加上数据
void SeqList::InsertRear(Type item)
{
	if(size==max)
	{
		cout<<"表已满!"<<endl;
		exit(1);
	}
	data[size]=item;
	size++;//最后一个为NULL 
}


//定点插入,即指定位置插入数据
//原理是将从最后一位到指定的位置的数据全部在、向后移一位,为加入的数据提供空间 
void SeqList::Insert(int id,Type item)
{
	if(id<0||id>size||size==max) 
	{
		cout<<"输入了不合理的下标或者表已满!"<<endl;
		exit(1); 
	}
	for(int i=size;i>=id;--i)
			data[i+1]=data[i];
	data[id]=item;
	size++;
}


//定点删除,将下标为id的数据删除
void SeqList::Erase(int id)
{
	if(id<0||id>size-1)
	{
		cout<<"输入了不合理的下标或者表已空!"<<endl;
		exit(1);
	}
	for(int i=id+1;i<size;++i)
			data[i-1]=data[i];
	size--;
}


//清表,即清空表内所有数据
void SeqList::Clear()
{     
	size=0;//计算机内的数据并不是物理性的清除,而是从逻辑上的,零数据个数为零,即清空了数据         
	} 
	
	
//取值,读取下标为id的数据
Type SeqList::Getdata(int id)
{
	if(id<0||id>size-1)
	{
		cout<<"输入不合理下标或者表已空!"<<endl;
		exit(1); 
	}
	return data[id];
}
//取数据个数,读取size的值 
int SeqList::Size()
{
	return size;
}


//判断是否为空表
int SeqList::Empty()
{
	return size==0;
}


//判断是否为满表
int SeqList::Full()
{
	return size==max;
}


int main()
{
	int n;
	SeqList L(10);//建立一个顺序表 
	L.InsertRear(5);
	L.InsertRear(15);
	L.InsertRear(20);
	L.Insert(1,10);
	L.Erase(0);
	n=L.Size();
	for(int i=0;i<n-1;i++)
	cout<<L.Getdata(i)<<"->";
	cout<<L.Getdata(n-1)<<endl;
	L.Clear(); 
	return 0;
 } 

对你有帮助的话点个赞支持一下吧~~
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值