当前位置: 首页 > 科技观察

理解第二种算法——序列表

时间:2023-03-17 23:13:51 科技观察

本文转载自微信公众号《前端引力》,作者一川。转载本文请联系前端Gravity公众号。写在前面对于开发来说,数组是我们经常要打交道的一种数据类型,那么它的内部存储结构是怎样的呢?我们将详细介绍它。线性表线性表是最基本、最简单、最常用的数据结构。线性表是具有相同特征的n个数据元素的有序序列。前驱元素:如果A元素在B元素之前,则A称为B的前驱元素。Backdriver元素:如果B元素在A元素后面,则B称为A的backdriver元素。线性表:线性表中的数据存储方式分为顺序存储和链式存储,其中:顺序存储是将线性表的数据元素按顺序存储在一个地址连续的存储单元中。链接存储使用一段地址不连续的存储单元来存储数据,并使用节点来连接和查询地址。随机访问:由于线性表存储在连续的内存位置,因此可以通过其索引计算内存地址以实现数据的随机访问。顺序表顺序表的存储方式其实就是在内存中找一个空位并占据,然后将数据元素一个一个的存储到空位中。听起来是不是有点像数组结构,没错,数据就是线性表结构。因此,我们可以用一个数组来表示序列表。线性表逻辑结构中相邻的数据元素存储在相邻的物理存储单元中,即数据元素之间的逻辑关系是通过数据元素的物理存储之间的相邻关系来体现的。邻里。数组的长度是存储线性表的存储空间的长度,分配存储后这个量一般不变。线性表的长度是线性表中数据元素的个数,这个数量随着线性表中的插入和删除操作而变化。请记住,任何时候线性列表的长度都应小于或等于数组的长度。classSequenceList{constructor(){//存储元素数组this.elemList=[];//当前序列表的元素个数this.elemLength=0;}//设置一个线性表为空表clear(){this.elemLength=0;}//判断当前线性表是否为空表isEmpty(){returnthis.elemLength===0;}//获取当前线性表的长度length(){returnthis.elemLength;}//向线性表中添加元素insert(elem){this.elemList[this.elemLength++]=elem;}//在第i个元素处插入元素eleminsertIndex(i,elem){//先插入元素在第i个索引位置及其后面位置的元素一个一个向后移动for(letindex=this.elemLength-1;index>i;index--){this.elemList[index]=this.elemList[index-1];}//把elem元素存储在第i个索引位置this.elemList[i]=elem;}//删除指定位置i的元素后,返回元素remove(i){//记录下索引i处的值letcurrent=this.elemList[i];//t后面的元素索引i可以一个一个向前移动for(letindex=i;index