我的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入门到入坟
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!