1. 栈
栈是一种使用较为广泛的数据结构,常用在:内存管理、匹配括号、表达式求值、回溯(游戏、寻找路径、穷尽搜索)等,后面讲解编译原理时,将会用到栈数据结构。它同时也是属于一种特殊的线性表,只允许在同一端进行操作。允许操作的端(插入元素、删除元素)称为栈顶,另外一端称为栈底。位于栈顶部的元素是栈顶元素,相反,位于栈底部的元素是栈底元素。栈中的所有元素个数称为栈长。栈的特点是后进先出(LIFO),即最先插入栈的元素,将会是最后一个被访问到;相反,最后插入栈的元素则最先被访问。若栈中的元素个数为零,则称该栈为空栈。
对于栈数据结构,向栈中插入元素、删除元素,有其专门的术语称谓。向栈中插入元素,常称为:入栈(压栈),删除栈结构中的元素称为:出栈(弹栈)。栈具有和下图中死胡同停车场具有相同特性,假设当前有A、B、C、D四辆车入库该停车场,而该停车场宽度一次仅允许一辆进入,这个四辆车入库的过程便是“入栈”,出库的