栈与队列
栈
栈是一种很常用的数据结构,是一个 只能在一端进行插入和删除操作 的线性表。
栈的一些基本概念
- 栈顶:线性表允许进行操作的一端
- 栈底:线性表不允许操作的一段
- 后进先出:栈中元素的入栈和出栈操作是符合后进先出规则的,如下图1
栈的基本操作
一般的栈都会用到如下操作,这里列出的操作也会在后面直接以简称的形式出现~
- 初始化空栈: initStack()
- 判断栈是否为空: isEmpty()
- 入栈: push()
- 出栈: pop()
- 读取栈顶元素: getTop()
栈的顺序存储结构
一般情况下,栈中元素占据连续的物理空间,在不同语言的实现中,栈顶指针可能始终指向栈顶的元素,也可能指向栈顶元素的下一个元素,此时判断空栈/满栈的条件要进行灵活的调节。
// 栈顶指针始终指向栈顶的元素
function isEmpty(