1.前面在介绍线性结构的时候已经提到过,常用的线性结构有线性表、栈和队列等。
2.线性表的 存储结构
线性表的结构特点主要表现在两个方面:
- 均匀性,虽然不同数据表的数据元素可以是各式各样的,但对同一线性表的各数据元素必定具有相同的数据类型和长度;
- 有序性,各数据元素在线性表中有序排列,数据元素之间相对位置是线性的,即存在唯一的“第一个”元素和“最后一个”元素。除第一个和最后一个元素,其他元素前面均有一个数据元素(直接前驱)和且后面均只有一个数据元素(直接后继)。
实现线性表数据元素的存储方面,一般可用顺序存储结构和链式存储结构两种方法。栈和队列是线性表的特殊情况,是受限的线性结构,只是在数据结构操作上有区别,在存储结构方面和线性表一样。
线性表的链式存储有三种形式:单链表、循环链表和双向链表。
- 单链表
在单链表中,每个节点都包含指向下一个节点的指针,最后一个节点的指针变为空,以标记是最后一个节点。之所以称为单链表是因为每个节点只存在一个节点指针,所以只能以顺序访问下一个节点,访问完某节点之后再想往回查找是不可以的。为记住单链表的第一个位置,可以定义一个头指针。
- 循环链表
在单链表的基础上,可以让最后一个节点的指针指向第一个节点,这样循环起来形成的链表为循环链表,循环链表可以顺序访问下一个节点,访问完某节点之后可以通过下一个循环再次访问到该节点,为了记住单链表的第一个位置和最后一个位置,可以定义一个头指针和尾指针。
- 双向链表
双向链表比单向链表多了一个节点指针,用来指向前一个节点数据,这样做的好处是为了避免寻找前面节点时发生的不便之举。
3.线性表
通过对线性结构分析,得出以下结论:对线性结构的主要操作有查找线性结构中某个信息、修改线性结构中的某个信息,在固定的位置插入和删除相应的信息等。即查询、修改、删除、插入等相关操作。
4.栈
栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表,它按照后进先出的原则来存储数据,先进入的数据被压入栈底,最后进入的数据在栈顶,需要读取数据的时候从栈顶开始弹出数据(最后进入的数据第一个被读出来)。
5.队列
队列也是一种特殊的线性结构,他只允许在该结构的前端进行删除操作,在后端进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头,队列中没有元素时称为空队列。
在队列这种是数据结构中最先插入的元素是最先被删除的元素,反之最后插入的元素将是最后被删除的元素,因此队列又被称为先进先出的线性结构。