我的Java数据结构学习-5---栈(stack)
栈------stack 后进先出 压栈:
出栈入栈图解:
栈的应用场景:
数组模拟栈数据结构:
数组模拟栈:
package Demo1.stackArray; public class ArrayStack { //数组模拟栈 private int maxSize;//栈最大的大小 //栈 private int[] stack; //栈顶 private int top = -1; //构造器。初始化栈 public ArrayStack(int maxSize) { this.maxSize = maxSize; stack = new int[this.maxSize]; } //栈满 public boolean stackIsFull() { return top == maxSize - 1; } //栈空· public boolean stackIsEmpty() { return top == -1; } //入栈操作 public void push(int value) { //栈满了,就不能入栈 if (stackIsFull()) { System.out.println("栈已经满了,请其他操作"); return; } top++; stack[top] = value; } //出栈操作 public int pop() { //栈空的化,不能出栈 if (stackIsEmpty()) { System.out.println("栈为空,不能出栈"); throw new RuntimeException("栈空无数据"); } int value = stack[top]; top--; return value; } //遍历栈 public void printfStack(){ if (stackIsEmpty()) { System.out.println("栈空,没有数据"); return; } String temp = ""; //top顶部开始遍历 for (int i = top; i >= 0; i--) { temp =temp + stack[i]+ "->"; } temp =temp + "栈"; System.out.println(temp); } }
测试数组模拟的栈:
package Demo1.stackArray; import java.util.Scanner; public class ArrayStackTest { public static void main(String[] args) { //测试数组模拟栈 ArrayStack arrayStack = new ArrayStack(4); String key =""; boolean flag = true; Scanner scanner = new Scanner(System.in); while (flag){ System.out.println("show:显示栈信息"); System.out.println("exit:退出程序"); System.out.println("push:添加数据入栈"); System.out.println("pop:从栈里面取出数据"); System.out.println("亲,请输入指令:"); key = scanner.next(); switch (key){ case "show": //显示栈 arrayStack.printfStack(); break;//预防case穿透 case "push": //压栈 System.out.println("请输入添加的数据:"); int value= scanner.nextInt(); arrayStack.push(value); break; case "pop": try{ int pop = arrayStack.pop(); System.out.println("出栈的数据-->"+pop); }catch (Exception e){ System.out.println(e.getMessage()); }finally { break; } case "exit": scanner.close(); flag =false; System.out.println("程序退出"); break; } } } }
show:显示栈信息
exit:退出程序
push:添加数据入栈
pop:从栈里面取出数据
亲,请输入指令:
push
请输入添加的数据:
10
show:显示栈信息
exit:退出程序
push:添加数据入栈
pop:从栈里面取出数据
亲,请输入指令:
push
请输入添加的数据:
20
show:显示栈信息
exit:退出程序
push:添加数据入栈
pop:从栈里面取出数据
亲,请输入指令:
push
请输入添加的数据:
30
show:显示栈信息
exit:退出程序
push:添加数据入栈
pop:从栈里面取出数据
亲,请输入指令:
show
30->20->10->栈
show:显示栈信息
exit:退出程序
push:添加数据入栈
pop:从栈里面取出数据
亲,请输入指令:
pop
出栈的数据-->30
show:显示栈信息
exit:退出程序
push:添加数据入栈
pop:从栈里面取出数据
亲,请输入指令:
show
20->10->栈
show:显示栈信息
exit:退出程序
push:添加数据入栈
pop:从栈里面取出数据
亲,请输入指令:
exit
程序退出
作者:隔壁老郭
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
Java入门到入坟
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南