栈和队列的存储结构、线性结构和非线性结构
栈和队列的存储结构
栈的顺序存储结构
定义:
栈是限定只能在表尾删除和插入操作的线性表。
允许插入和删除的一端称为栈顶(top)。另一端称为栈底(button),栈又称先进后出的线性表
栈的插入操作称为进栈,也称为压栈、入栈。
栈的删除操作称为出栈,也称弹栈
栈的抽象数据结构
由于栈本身就是线性表,所以线性表的操作特性他都具备,针对它的特殊性,在它的操作上可能会有一些变化。将进栈和出栈分别改名为push和pop
由于栈本身是一个线性表,所以线性表的顺序存储结构和链式存储结构同样适用于栈
队列的存储结构
定义
队列数只允许在一端进行插入操作,另一端进行删除操作的线性表
队列是一种先进进出的线性表。允许插入的一端称为队尾,允许删除的一端,称为对头
队列的顺序存储结构
顺序队列的存储不足引出---循环队列
线性结构和非线性结构
线性结构
线性结构是一个有序数据元素集合。常用的线性结构有:线性表、栈、队列、数组、双队列、串。
线性结构作为最常用的数据结构,其特点是数据元素之间一对一的线性关系
线性结构拥有两种不同的存储结构,即顺序存储结构和链式存储结构。顺序存储的线性表称为顺序表,顺序表中的元素是连续的,链式存储的线性表称为链表链表不一定连续元素结点中存放数据元素以及相邻元素的地址信息
线性结构中存在两种操作受限的使用场景,即队列和栈。栈的操作只能在线性表的一端进行,就是我们常说的先进后出(FILO),队列的插入操作在线性表的一端进行而其他操作在线性表的另一端进行,先进先出(FIFO),由于线性结构存在两种存储结构,因 此队列和栈各存在两个实现方式。
非线性结构
非线性结构,其逻辑特征是一个结点元素可能有多个直接后继。常见的非线性结构有:二维数组,广义表,树(二叉树)
非线性结构中各个数据元素不再保持在一个线性序列中,每个数据元素可能与零个或者多个其他数据元素发生联系。根据关系的不同,可分为层次结构和群结构
数据结构
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关