在上一篇文章中,我们详细介绍了链式存储结构,并结合LinkedList源码进行了分析,相关文章大家可以点击这里回看我的博客:线性表数据结构解读(二)链式存储结构LinkedList
栈的定义
栈是一种特殊的线性表,其全部操作都被限制在表的固定一端进行,而且构成栈的元素必须是同一数据类型。
栈的特点
允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出的线性表
栈的操作
栈的常用操作包括建立栈、元素入栈、元素出栈、取栈顶元素等。
空栈
当建立一个栈时,不包括任何元素,此时称其为空栈。栈为空时top和bottom共同指向栈底。向栈中插入元素成为入栈,使top指向的元素退出栈,称为出栈,出栈和入栈操作全部是针对栈顶元素进行操作的。
栈的存储结构
● 顺序栈
将栈在顺序存储结构下所得到的结构成为顺序栈。顺序栈类类似于数组,因此可以使用数组实现顺序栈的相关运算,通常栈底是下标为0的一端。
● 链式栈
将栈在链式存储结构下所得到的结构,称为链式栈。链式栈类似于指针,在java中可以通过类的对象引用实现指针运算。
链式栈的入栈操作
把top的引用指向新的结点,新结点的下一个引用指向原来的top结点
链式栈的出栈操作
把top的引用指向原栈顶元素的下一个元素,并释放原栈顶元素的引用
栈结构在Android中的应用
可以参考我的博客:彻底弄懂Activity四大启动模式
在Android中,我们常见具有代表性的栈结构为Stack,下面我们进行分析,看看它内部是如何实现入栈和出栈操作的。
public class Stack<