数据结构与算法学习总结-线性表的顺序存储与实现

本文总结了线性表的顺序存储结构,包括数据元素存储地址的计算方式,以及线性表的顺序存储特点。还讨论了线性表的操作,如动态扩展数组以适应不同长度需求,数组中数据元素的查找、添加和删除,这些操作的时间复杂度。最后,介绍了线性表在Java中使用ArrayList类的数组实现,包括成员变量的作用。
摘要由CSDN通过智能技术生成

  线性表的顺序存储是用一组地址连续的存储单元一次存储线性表的数据元素。

1.线性表的顺序存储

  假设线性表的每个数据元素需占用K个存储单元,并以元素所占的第一个存储单元的地址作为数据元素的存储地址。则线性表中序号为i的数据元素的存储地址LOC(ai)与序号为i+1的数据元素的存储地址LOC(ai+1)之间的关系为:
  LOC(ai+1)=LOC(ai)+K
  通常来说,线性表的i号元素的存储地址为:
  LOC(ai+1)=LOC(a0)+i×K
  其中LOC(a0)为0号元素的存储地址,通常称为线性表的起始地址。
  线性表的这种机内表示称作线性表的顺序存储。它的特点是,以数据元素在机内存储地址相邻来表示线性表中数据元素之间的逻辑关机。每一个数据元素的存储地址都和线性表的起始地址相差一个与数据据元素在线性表中的序号成正比的常数。由此,只要确定了线性表的起始地址,线性表中的任何一个数据元素都可以随机存取,因此线性表的顺序存储结构时一种随机的存储结构。如图所示:

线性表的顺序存储
线性表的顺序存储

  由于高级语言中的数组具有随机存储的特性,因此在抽象数据类型的实现中都是使用数组来描述数据结构的顺序存储结构。线性表中的数据元素在一次存放的数组中的时候,线性表中序号为i的数据元素对应的数组下标页为i,即数据元素在线性表中的序号与数据元素在数组中的下标相同。
  如果线性表中的数据元素是对象是,数组存放的是对象的引用,即线性表中所有数据元素的对象引用是存放在一组连续的地址空间中。
数组存储对象引用
数组存储对象引用

2.线性表的操作

  由于线性表的长度可变,不同的问题所需的最大长度不同,那么在线性表的具体视线中我们是使用动态扩展数组大小的方式来完成线性表长度的不同要求的。
  在使用数组实现线性表的操作中,经常会遇到在数组中进行数据元素的查找、添加、删除等操作。
  查找:在数组中进行查找,最简单的方法就是顺序查找,平均时间复杂度θ(n).
  添加:在数组中添加数据元素,通常是在数组中下标为i(0≤i≤n)的位置添加数据元素,而将原来下标从i开始的数组中所有后续元素依次后移,如图所示:

在数组下标i处插入元素e
在数组下标i处插入元素e

  代码:

for(int 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值