数据结构算法-顺序表技术点

本文详细介绍了顺序表的基本概念,包括其优点(如直接访问)、原理(线性存储与动态调整)以及实现(初始化、追加、插入和删除操作)。通过实例演示了如何在实际编程中使用顺序表,并提供了关键函数的代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

顺序表

基本描述

话说, 人们都喜欢吃薯条和薯片或者零食 ,如果没有包装那不是拿不了,那么这个时候包装是不是很重要呢,
此时产生了顺序表;
顺序表:顺序表
能在图片看到了一个大仓库,这个大仓库里的数据是一致的而且必须是一致的否则无法,访问
这就好比你吃薯片的时候,突然出现了食品安全问题
在就是顺序表

顺序表的优点:

  1. 访问数据时比较方便
    直接通过 e[pos] 这个 pos<=0或者pos>=size-1 都可以访问

顺序表的缺点:
插入,删除需要大量的移动

顺序表的原理精讲

顺序表 是一种线性结构
存储时相邻的数据,在计算机里内存里面的位置也是相邻的
顺序表不仅仅是简单的数组,而且有特征
	快速定位第n个数据元素
	中间不能出现空值
	支持插入和删除
		通过移动数组每一个元素
			达到插入和删除
	删除数据元素
		数据元素往前移动
			元素的个数就会 -1
	插入数据元素
		数据元素往后移动
			元素的个数就会 +1
顺序表三大要素
	需要指向首元素的地址 ,存储的位置
		称之为基地址
	到底能存储的多少个元素
		size
	存储元素的个数
		length

顺序表的算法实现

初始化
	函数 init
		返回值类型 bool
			返回真 :一切正常
			返回假:异常
		参数为Sqlist &list, size=default_size
			default_size=100
		判断参数<=0
			返回假
		根据参数size 分配内存
			new ElemType[size];
		将new ElemType[size]返回值给接收者
			 list.elems
		将list.length置为0
		将list.size设置为参数size;
		返回真 
尾部追加元素
	函数 listAppend
		返回值类型 bool
			返回真 :一切正常
			返回假:异常
		参数为Sqlist &list,ElemType &&elem 或者 const ElemType&elem
		判断list.length要>=list.size
			返回假
		将第list.length个元素 添加进来
			list.elems[lst.length]=elem;
		将list.length往后偏移
			++list.length;
		返回真
插入元素
	函数 listInsert
		返回值类型 bool
			返回真 :一切正常
			返回假:异常
		参数为Sqlist &list,int pos,ElemType &&elem 或者 const ElemType&elem
		判断pos<0
			返回假
		判断 pos>=list.length
			调用listAppend
		数据后移
			循环变量i=list.length-1位置
				i=list.length-1;
			i>=pos
			数据后移
				list.elems[i+1]=list.elems[i];
					例如说i=4 i+1=5 前面的数据移动到后面的数据
			--i;
		将第pos的位置的数据设置为elem
			list.elems[pos]=elem;
		将list.length往后偏移
			++list.length;
		返回真
删除元素
	函数 listDelete
		返回值类型 bool
			返回真 :一切正常
			返回假:异常
		判断pos<0
			返回假
		判断list.length<=0
			返回假
		判断 pos>=list.length-1
			最后一个元素时
			将list.length往前偏移
				--list.length;
			返回真
		数据前移
			循环变量i=pos 位置
				i=pos;
			i<list.length
			数据前移
				list.elems[i]=list.elems[i+1];
					例如说i=4 i+1=5 后面的数据移动到前面的数据
			++i;
		将list.length往前偏移
			--list.length;
		返回真
销毁
	函数 ListDestroy
		返回值类型 void 
		参数为Sqlist &list
		判断 list.elems 
			释放list.elems 指向的内存空间
				delete[]list.elems; 
			list.length置为0
				list.length=0;
			list.size置为0
				list.size=0;

顺序表添加元素 web link
顺序表添加元素

顺序表插入元素 web link
顺序表插入元素

顺序表删除元素 web link
顺序表删除元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小森程序员

若能帮助到你,小费自愿付费

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

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

打赏作者

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

抵扣说明:

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

余额充值