线性表的定义及其的顺序存储结构

1,272 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第29天,点击查看活动详情

线性表

什么是线性表

线性表就是数据元素排列像一条线一样的表(说废话一样哈哈哈!!!,但似乎并没有错)。严格来说,线性表是具有相同特性的数据元素的一个有限序列。

线性表的特征

  • 所有数据元素类型相同
  • 线性表由有限个数据元素构成
  • 线性表中的数据元素与位置相关,即每个数据元素有唯一的序号,这表明线性表不同于集合,在线性表中可以出现相同的数据元素(他们的序号不同),而集合中不会出现值相同的数据元素。

线性表逻辑结构表示

线性表逻辑结构相对来说是比较简单的,一般表示为(a0,a1,a2,a3,a4,a5,a6,···,ai-1,ai,···,an-1)如图:

09be3c660dfa20fbeb851ee219ee3af.jpg

  • 注:线性表中每一个元素ai的唯一位置通过序号或索引i表示,i一般从0开始,这样含有n个元素的线性表的序号i满足0<=i<=n-1;其中n表示的是线性表的长度,当n=0时表示线性表是一个空表,不包含任何数据元素。
  • 由图可知,在线性表中每个元素最多只有一个前驱元素、最多只有一个后继元素。首元素没有前驱元素。尾元素没有后继元素。

线性表的抽象数据类型描述

线性表的抽象数据类型描述:

ADT List
{
//数据对象:
D={ai|0<=i<=n-1,n>=0,ai为E类型}     //E指的是用户指定类型
//数据关系:
r={<ai,ai+1>|ai,ai+1∈D,i=0,···,n-2}
//基本运算
E GetElem(int i):求线性表中序号为i的元素。
void SetElem(int i,E e):设置线性表中序号i的元素值为e
void swap(int i ,int j):交换线性表中序号为i和序号为j的元素
//········

线性表的顺序存储结构

顺序存储是线性表最常用的存储方式,它直接将线性表的逻辑结构映射到存储结构上,所以既便于理解,又容易实现。

顺序表

线性表的顺序存储结构是把线性表中的所有元素按照其逻辑顺序依次存储到计算机存储器中。线性表的顺序存储结构成为顺序表。

ba693cdc047db563457eda661b938a4.jpg

  • capacity:数组的容量(存放的最多元素的个数)
  • 代码示例:
public class SqlListClass<E>   //顺序表泛型
{
    final int initcapacity=10; //顺序表的初始容量
    public E[] data;           //存放顺序表中的元素
    public int size;           //存放顺序表的长度
    public int capacity;       //存放顺序表的容量
    public SqlListClass()      //构造方法,实现data和length的初始化
    {
     data=(E[]) new Object[initcapacity];   // 强制转换为E类型数组
     capacity =initcapacity;
     size=0;
    }
    
    //顺序表基本算法
}