考研数据结构---线性表---顺序表

线性表的逻辑结构

定义:线性表示具有相同数据类型的n(n>=0)个数据元素的有限序列

除了第一个元素外,每个元素有且仅有一个直接前驱,出最后一个元素外,每个元素有且仅有一个直接后继

物理结构

线性表的顺序存储结构
定义:线性表的顺序存储使用一组地址连续的存储单元(比如C语言里面的数组依次存储线性表中的数据元素,顺序存储的线性表也叫顺序表

顺序表需要的三个部分

  1. 存储空间的起始位置
  2. 顺序表最大存储容量
  3. 顺序表当前的长度

顺序表的数据结构

1.静态建表

typedef int Elementype;
typedef struct {
	Elementype data[MaxSize];		//存储的元素
	int length;					   //当前的长度
}SqList;				//用于类型的定义    相当于int 可以用Elementype什么的

2.顺序表的插入

//整体返回的是bool类型,第一个参数是Sqlist类型定义的地址,第二个参数是要插入的位置,第三个是插入的元素
bool ListInsert(SqList &l, int i, Elementype e)
{
	if (i<1 || i>l.length + 1)	//判断i的范围小于1和大于顺序表当前长跳出
		return false;
	if (l.length >= MaxSize)		//保证顺序表的长度小于申请的长度
		return false;
	for (int j = l.length; j >= i; j--)		//将第i个元素及以后的元素后移
	{
		l.data[j] = l.data[j - 1];
	}
	l.data[i - 1] = e;				//在位置i处放入元素e
	l.length++;					//线性表的长度加1
	return true;
}

顺序表的删除

//第一个参数是SqList的地址相当于把顺序表的表头传入,第二个参数是删除第i的元素,第三个参数是删除的元素
bool ListDelete(SqList &l, int i, Elementype &e)
{
	if (i<1 || i>l.length)
		return false;
	e = l.data[i - 1];				//将被删除的元素赋值给e
	for (int j = i; j < l.length; j++)			//将第i个位置之后的元素前移
	{
		l.data[j - 1] = l.data[j];
	}
	l.length--;				//将顺序表的长度减1
	return true;
}
  1. 顺序表的优点:
    存储密度大,不需要为表中元素之间的逻辑关系增加额外存储空间,随机存储,可以快速存取表中任意位置的元素.
  2. 顺序表的缺点:
    插入和删除操作需要移动大量元素,对存储空间要求高,会产生存储空间的“碎片”
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值