线性表--顺序存储

8 篇文章 0 订阅

1.创建一个线性表

线性表,就是由他的元素和它的长度两个主要的元素组成

下面是创建线性表的一个很常用的模板

const int MaxSize=1e5;

typedef struct {
	ElemType elem[MaxSize];
	int length;
} SqList;

2.然后就是线性表的基本操作,包括他的初始化,求长度,求特定位置的元素是什么

//线性表的初始化
int InitList Sq(SqList &L) {
	L.elem=new ElemType[MaxSize];//为顺序表分配空间
	if(!L.elem)exit(0);//分配失败
	L.length=0;
	return 1;
}
//销毁线性表
void DestroyList(SqList &L) {
	if(L.elem)delete L.elem;
}

//清空线性表
void ClearList(SqList &L) {
	L.length=0;//线性表还是在的,但是清空元素
}

//线性表长度
int ListLength(SqList &L) {
	return (L.length);
}

//判断顺序线性表是否为空
bool IsEmpty(SqList &L) {
	if(L.length==0)return 1;
	else return 0;
}

//获取第i个元素的数据元素的内容
int GetElem(SqList L,int i,ElemType &e) {
	if(i<1||i>L.length)return 0;
	e=L.elem[i-1];
	return 1;
}

//查找特定元素的位置返回其位置
int LocateElem(SqList &L,ElemType &e) {
	for(int i=0; i<L.length; i++)
		if(L.elem==e)
			return i+1;
		else
			return 0;
}

3.插入,删除和查找

//线性表的插入操作
int ListInsert(SqList &L,int i,ElemType &e) {

	//考虑插入位置是否合法,并且判断线性表是否已经满了
	if(i<1||i>L.length||i>MaxSize)return 0;
	L.elem[i-1]=e;
	for(int j=L.length-1; j>=i; j--) {
		L.elem[j+1]=L.elem[j];
	}
	//注意要倒过来这样写哈哈哈哈,反正我觉得这样写比较好 
	L.length+=1;
	return 1;
}

//顺序表的删除操作
int ListDelete(SqList &L,int i,ElemType &e)
{
	if(i<1||i>L.length)return 0;
	//首先判断这个给的地址是否合法 
	e=L.elem[i-1];//把这个要删除的存在e里头,这一步删掉也可以 
	for(int j=i-1;j<=L.length;j++)
	L.elem[i-1]=L.elem[i];
	L.length++;
	return 1;
 } 
//获取第i个元素的数据元素的内容
int GetElem(SqList L,int i,ElemType &e) {
	if(i<1||i>L.length)return 0;
	e=L.elem[i-1];
	return 1;
}

//查找特定元素的位置返回其位置
int LocateElem(SqList &L,ElemType &e) {
	for(int i=0; i<L.length; i++)
		if(L.elem==e)
			return i+1;
		else
			return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Andy℡。

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

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

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

打赏作者

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

抵扣说明:

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

余额充值