数据结构(一)——线性表的顺序表示和实现
一、线性表的定义
由n(n>=0)个数据特性相同的元素构成的有限序列称为线性表,(n=0)的时候被称为空表。
一个数据元素可以是简单的一个数据,一个符号,也可以是复杂的若干个数据项的组合。
二、线性表的类型定义
s线性表是由n(n≥0)个相同类型的数据元素组成的有限序列,它是最基本最常用的一种线性结构。顾名思义,线性表就像是一条线,不会分叉。线性表有唯一的开始和结束,除了第一个元素外,每个元素都有唯一的直接前驱:除了最后一个元素外,每个元素都有唯一的直接后继,如图所示。
eg1: 线性表的两种存储结构为 链表 和 顺序表
eg2: 线性表是具有n个(数据元素)的有限序列(n>0)
三、顺序表定义
顺序表采用顺序存储方式,即逻辑上相邻的数据在计算机内的存储位置也是相邻的。顺序存储方式,元素存储是连续的,中间不允许有空,可以快速定位第几个元素,但是插入和删除时需要移动大量元素
eg1: 如果一个顺序表中第一个元素的存储地址是1000,每个元素占4个地址单元,那么第6个元素的存储地址是(1020)
eg2: 当需要随机查找线性表的元素时,宜采用(顺序表)作为存储结构
四、线性表的操作
1.初始化
初始化是指为顺序表分配一段预定义大小的连续空间,用elem记录这段间的基地址,当前空间内没有任何数据元素,因此元素的实际个数为0。假设我们已经预定义了一个最大空问数Maxsize,那么就用new分配大小为Maxsiz的空间,分配成功会返回空间的首地址,分配失败会返回空指针
2.创建
3.取值
顺序表中的任何一个元素都可以立即找到,称为随机存取方式。例如,要取第i个元素,只要i值是合法的(1≤i≤L.length),那么立即就可以找到该元素。由于下标是从0开始的,因此第i个元素,其下标为i-1,即对应元素为L.elem[i-1]
注意:位序是指第几个元素,位序和下标差1。
4.插入
在顺序表中第i个位置之前插入一个元素e,需要从最后一个元素开始,后移一位,直到把第i个元素也后移一位,然后把e放入第i个位置
eg1: 在一个长度为n的顺序表中,在第i个元素(1<=i<=n+1)之前插入一个新元素时须向后移动(n-i+1)个元素
5.删除
在顺序表中删除第i个元素,需要把该元素暂存到变量e中,然后从i+1个元素开始前移,直到把第几个元素也前移一位,即可完成删除操作。