线性表
线性表的基本概念
对于同一个线性表,其每一个数据元素的值虽然不同,但必须具有相同的数据类型;
数据元素之间具有一种线性的或“一对一”的逻辑关系。
第一个数据元素没有前驱,这个数据元素被称为开始节点;
最后一个数据元素没有后继,这个数据元素被称为终端节点;
除了第一个和最后一个数据元素外,其他数据元素有且仅有一个前驱和一个后继。
线性表的抽象数据类型描述
基本操作如下:
线性表的置空操作clear():将一个已经存在的线性表置为空表。
线性表判空操作isEmpty():判断线性表是否为空,若为空,则返回true;否则,返回为false。
求线性表的长度操作length():求线性表中的数据元素的个数并返回其值。
取元素操作get(i):读取并返回线性表中的第i个数据元素的值。其中i的取值范围为0≤i≤length()-1。
插入操作insert(i,x):在线性表的第i个数据元素之前插入一个值为x的数据元素。其中i的取值范围为0≤i≤length()。当i=0时,在表头插入x;当i=length()时,在表尾插入x。
删除操作remove(i):删除并返回线性表中第i个数据元素。其中i的取值范围为0≤i≤length()-1。
查找操作indexOf(x):返回线性表中首次出现的指定的数据元素的位序号,若线性表中不包含此数据元素,则返回-1。
线性表的顺序存储及实现
顺序表的定义
所谓顺序表就是顺序存储的线性表。顺序存储是用一组地址连续的存储单元依次存放线性表中各个元素的存储结构。
顺序表的特点:
在线性表中逻辑上相邻的数据元素,在物理存储上也是相邻的。
存储密度高,但要预先分配“足够应用”的存储空间,这可能会造成存储空间的浪费。
便于随机存储。
不便于插入和删除操作,这是因为在顺序表上进行的插入和删除操作会引起大量数据元素的移动。