1.前面在介绍线性结构的时候已经提到过,常用的线性结构有线性表、栈和队列等。

2.线性表的 存储结构

线性表的结构特点主要表现在两个方面:

  • 均匀性,虽然不同数据表的数据元素可以是各式各样的,但对同一线性表的各数据元素必定具有相同的数据类型和长度;
  • 有序性,各数据元素在线性表中有序排列,数据元素之间相对位置是线性的,即存在唯一的“第一个”元素和“最后一个”元素。除第一个和最后一个元素,其他元素前面均有一个数据元素(直接前驱)和且后面均只有一个数据元素(直接后继)。

实现线性表数据元素的存储方面,一般可用顺序存储结构和链式存储结构两种方法。栈和队列是线性表的特殊情况,是受限的线性结构,只是在数据结构操作上有区别,在存储结构方面和线性表一样。

线性表的链式存储有三种形式:单链表、循环链表和双向链表。

  • 单链表

在单链表中,每个节点都包含指向下一个节点的指针,最后一个节点的指针变为空,以标记是最后一个节点。之所以称为单链表是因为每个节点只存在一个节点指针,所以只能以顺序访问下一个节点,访问完某节点之后再想往回查找是不可以的。为记住单链表的第一个位置,可以定义一个头指针。

Java 线性表实现 java线性结构_线性表

  • 循环链表

在单链表的基础上,可以让最后一个节点的指针指向第一个节点,这样循环起来形成的链表为循环链表,循环链表可以顺序访问下一个节点,访问完某节点之后可以通过下一个循环再次访问到该节点,为了记住单链表的第一个位置和最后一个位置,可以定义一个头指针和尾指针。

Java 线性表实现 java线性结构_数据_02

  • 双向链表

双向链表比单向链表多了一个节点指针,用来指向前一个节点数据,这样做的好处是为了避免寻找前面节点时发生的不便之举。

Java 线性表实现 java线性结构_数据_03

3.线性表

通过对线性结构分析,得出以下结论:对线性结构的主要操作有查找线性结构中某个信息、修改线性结构中的某个信息,在固定的位置插入和删除相应的信息等。即查询、修改、删除、插入等相关操作。

Java 线性表实现 java线性结构_线性结构_04

4.栈

栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表,它按照后进先出的原则来存储数据,先进入的数据被压入栈底,最后进入的数据在栈顶,需要读取数据的时候从栈顶开始弹出数据(最后进入的数据第一个被读出来)。

Java 线性表实现 java线性结构_线性结构_05

5.队列

队列也是一种特殊的线性结构,他只允许在该结构的前端进行删除操作,在后端进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头,队列中没有元素时称为空队列。

在队列这种是数据结构中最先插入的元素是最先被删除的元素,反之最后插入的元素将是最后被删除的元素,因此队列又被称为先进先出的线性结构。

Java 线性表实现 java线性结构_数据_06