栈
(1)栈的定义
- 栈也是一种线性表,其特殊性在于栈的基本操作是线性表操作的子集,即栈是操作受限的线性表。
栈(stack)是限定仅在表尾进行插入或删除操作的线性表。其中,对栈而言,表尾端称为栈顶(top),表头端称为栈底(bottom)。不含元素的空表称为空栈。 - 假设栈 S = ( a 1 , a 2 , a 3 . . . , a n ) S = (a_1,a_2,a_3...,a_n) S=(a1,a2,a3...,an),且元素按照 a 1 , a 2 , . . . , a n a_1,a_2,...,a_n a1,a2,...,an 次序进栈,则称 a 1 a_1 a1 为栈底元素, a n a_n an 为栈顶元素。
- 其中,退栈的第一个元素为栈顶元素 a n a_n an。即栈的修改是按后进先出的原则进行的,因此栈又称为后进先出(last in first out)的线性表(简称LIFO结构)。
(2)栈的分类与实现
- 顺序栈:即栈的顺序存储结构表示,是利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针 top 指示栈顶元素在顺序栈中的位置。
- 链式栈:即栈的链式存储结构表示,结构类似于单链表结构。
具体实现如下链接。
(3)栈的应用
- 数制转换
- 括号匹配的检验
- 行编辑程序
- 迷宫求解
- 表达式求值
文章参考书籍《数据结构:C语言版/严蔚敏,吴伟民编著.》