GitHub源码分享
项目主页:https://github.com/gozhuyinglong/blog-demos
本文源码:https://github.com/gozhuyinglong/blog-demos/tree/main/java-data-structures
1. 栈(Stack)
栈又叫堆栈,是一种运算受限制的线性表,限定只能在一端进行插入和删除操作,该端称为栈顶(Top),相对的另一端叫栈底(Bottom)。
根据栈的定义可知,最先进入栈的元素在栈底,最后进入栈的元素在栈顶。而删除元素刚好相反,即删除顺序从栈顶到栈底
对栈的操作只有两种:
入栈(push):又叫进栈或压栈,即向栈插入一条新的元素,该元素为新的栈顶元素。
出栈(pop):又叫退栈,即从栈顶删除(取出)最后入栈的元素,而其相邻元素成为新的栈顶元素。
栈是一个先进后出(FILO – First In Last Out)的有序列表。在上图中描述了栈的模型,我们对栈的操作只有push和pop,栈顶元素是该栈唯一可见的元素。
2. 代码实现
由于栈是一个表,因此任何实现表的方法都能实现栈。显然我们之前用到的《 数组 》和《 链表 》都可以实现栈。下面代码是使用数组实现的一个栈。
size表示栈内元素的大小,栈顶元素为 elementData[size – 1],栈底元素为 elementData[0]。入栈时执行 size++,出站时执行 size–
public class StackDemo {
public static void main(String[] args) {
System.out.println("-------------------入站");
Stack stack = new Stack<>(10);
stack.push("a");
stack.push("b");
stack.push("c");
stack.push("d");
stack.push("e");</