栈(stack)是一种很常见的线性结构。它是只允许在一端进行插入和删除操作的线性表,这一端我们称为栈顶。栈的特点常被称为:先进后出(filo-first int last out),或者是后进先出(lifo-last in first out)。这个描述从它的操作特点可以看出,只许在一端进行插入,那么显然,先进的肯定后出。栈的应用,比如系统应用栈来实现递归,图的深度遍历使用了栈,递归要用到栈……。说到它的实现就有两种形式:顺序栈、链栈。其中以顺序栈最为常见。
栈的常见操作:
- push() 入栈
- pop() 出栈
- top() 获取栈顶元素
- size() 获取栈的大小
- empty() 判断栈是否为空
看下图:
其中 base 是栈底指针,top是栈顶指针,我们会发现,top指向栈中元素的下一个位置。若top为0,则表明栈为空。
在代码中我们用stop(stack top)代替top,因为top指针和top()函