一、基本概念
线性表是零个或多个数据元素的有限序列。
ADT 线性表(List)
Data
线性表的数据对象集合为{a1,a2,...,an},每个元素的类型均为DataType。其中,除第一个元素a1外,每个元素有且只有一个直接前驱元素,除了最后一个元素an外,每个元素有且只有一个直接后继元素。数据元素之间的关系是一对一的关系。
Operation
InitList(*L):初始化操作,建立一个空的线性表L。
ListEmpty(L):若线性表为空,返回true,否则返回false。
ClearList(*L):将线性表清空。
GetElement(L, i, *e):将线性表中的第i个位置元素返回给e。
LocateElement(L,e):将线性表L中查找与给定值e相等的元素,如果查找成功,返回该元素在表中序号表示成功,否则返回0表示失败。
ListInsert(*L, i, e):在线性表L中的第i位置插入新元素e。
ListDelete(*L, i, *e):删除线性表中第i个位置元素,并用e返回其值。
ListLength(L):返回线性表L的元素个数。
endADT
|
二、详细分析
1、顺序存储结构
线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。
插入数据示意图
从最后一个元素开始向前遍历到第i个位置,分别将它们都向后移动一个位置,将插入的数据元素放到位置i处。
删除数据示意图
取出删除元素,从删除元素位置开始遍历到最后一个元素位置,分别将它们都向前移动一个位置。
顺序存储的优缺点
2、链式存储结构
线性表的链式存储结构
插入元素示意图
删除元素示意图
三、分析总结
若线性表需要频繁查找,很少进行插入和删除操作时,宜采用顺序存储结构。若需要频繁插入和删除时,宜采用单链表结构。