一、介绍
栈是一种数据先入后出,后入先出的数据结构。
如果图所示,将数字 10、15、6、9 存入栈后,从栈中取到的数据按顺序将会是 9、6、15、10。栈的结构像我们生活中的箱子,最先放入的物品将会在箱子的最底部,最后放入的数据在最上面,拿物品时也需要从最上面拿起。
二、代码实现
1、创建 MyStack 类作为自定义的栈
public class MyStack {}2、声明所需的属性
底层使用数组存储数据,也可以使用java的泛型替代 类型。
private [] arr;//存储数据private int top;//栈顶的位置栈顶:整个栈最上面(最后入栈)的元素,也就是数组中最后存入的元素。
栈底:整个栈最下面(最先入栈)的元素,也就是数组中最先存入的元素。
3、栈的构造方法
public MyStack(){ arr = new [10]; top = -1;}/** * 参数为数组的初始长度 * @param maxSize */public MyStack(int maxSize){ arr = new [maxSize]; top = -1;}4、向栈中压入数据
底层的操作就是向数组中存入数据,由于top变量记栈顶的位置,所以top的值增加1后即为最新的栈顶的置。
public void push( value) { arr[++top] = value;}5、弹出栈顶的数据
取得栈顶的数据,并将此数据将栈中移除。向栈中压入数据需要将记录栈顶的位置的变量top加1,同理,移除栈顶数据需要将top减1。
public pop(){ return arr[top--];}6、查看栈顶数据
public peek(){ return arr[top];}7、判断是否为空
public boolean isEmpty(){ return top == -1;}8、判断是否存满
top的值等于数组最后一个元素的位置即为存满
public boolean isFull(){ return top == arr.length-1;}9、完整代码
public class MyStack { private [] arr;//存储数据 private int top;//栈顶的位置 public MyStack() { arr = new [10]; top = -1; } /** * 参数为数组的初始长度 * * @param maxSize */ public MyStack(int maxSize) { arr = new [maxSize]; top = -1; } public void push( value) { arr[++top] = value; } /** * 弹出栈顶的数据 * @return */ public pop(){ return arr[top--]; } public peek(){ return arr[top]; } public boolean isEmpty(){ return top == -1; } public boolean isFull(){ return top == arr.length-1; }}三、验证
public static void main(String[] args) { MyStack stack = new MyStack(4); stack.push("a"); stack.push("b"); stack.push("c"); stack.push("d"); System.out.println("是否为空:" + stack.isEmpty()); System.out.println("是否存满:" + stack.isFull()); System.out.println("栈顶:"+stack.peek()); System.out.println("栈顶:"+stack.peek()); //弹出栈中所有数据 while (!stack.isEmpty()){ System.out.println(stack.pop()); } System.out.println("是否为空:" + stack.isEmpty()); System.out.println("是否存满:" + stack.isFull());} 继续阅读与本文标签相同的文章
-
HostGator不限流量主机好不好?
2026-05-21栏目: 教程
-
跨账号跨地域迁移海量小文件
2026-05-21栏目: 教程
-
让iterm多个窗口执行同一个命令
2026-05-21栏目: 教程
-
关于新手小白阿里云服务器如何购买最优惠
2026-05-21栏目: 教程
-
重学计算机组成原理(二)- 制定学习路线,攀登“性能”之巅
2026-05-21栏目: 教程
