栈和队列是两种重要的线性结构。从数据结构来看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表操作的子集,它们是操作受限的线性表,因此,可称为限定性的数据结构。但从数据类型角度看,它们是和线性表不相同的两类重要的抽象数据类型。
1.1栈和队列的定义和特点
1.1.1栈的定义和特点
- 栈(stack)是限定仅在表尾进行插入或删除操作的线性表。
- 对栈来说,表尾端有其特殊含义,称为栈顶(top),相应地,表头端称为栈底(bottom)。
- 不含元素的空表称为空栈。
- 假设栈S=(a1,a2,...,an),则a1为栈底元素,an为栈顶元素。栈中元素按a1,a2,...,an的次序进栈,退栈的第一个元素应为栈顶元素。
- 栈的修改是按后进先出的原则进行的,栈又称为后进先出(Last In First Out,LIFO)的线性表。如果需要按照保存数据时相反的顺序来使用数据,则可以利用栈来实现。
- 相关案例有,数制的转换,括号匹配的检验,表达式求值等。
1.1.2队列的定义和特点
- 和栈相反,队列(queue)是一种先进先出(First In First Out,FIFO&#