栈:限定仅在表尾进行插入和删除操作的线性表。栈是一种后进先出的结构,我们将允许插入和删除的一端称为栈顶(top),而另一端就称之为栈底(bottom),当栈中无任何数据元素时称作空栈。
栈是一个线性表,它具有线性关系,即前驱后继的关系。由于栈限定了线性表插入和删除的位置,所以栈底也是固定的。在线性表中表头是栈底,表我是栈顶。最先入栈的只能在栈底。下面我们来看看栈的两种操作——进栈和出栈:


1.栈的顺序存储结构
用数组存放数据,top变量来指示栈顶元素在数组中的位置(栈顶指针)。一个长度为5的栈的示意图如下:
实验程序:
1 | package com.tongcaipay.merchant.apply.study; |
测试代码:
1 | public static void main(String[] args) { |
测试结果:
2.栈的链式存储结构
下面我们再来看看链栈,
链栈的入栈操作如图:
链栈的出栈如下图:
实验程序:
1 | package com.tongcaipay.merchant.apply.study; |
测试代码:
1 | public static void main(String[] args) { |
测试结果:
