“携手创作,共同成长!开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第13天,点击查看活动详情”
应用场景
1)子程序的调用:在跳往子程序前,会先将下个指令的地址存到堆栈中,直到 子程序执行完后再将地址取出,以回到原来的程序中。
2)处理递归调用:和子程序的调用类似,只是除了储存下一个指令的地址外,也将参数、区域变量等数据存入堆栈中。
3)表达式的转换[中缀表达式转后缀表达式]与求值(实际解决)。
4)二叉树的遍历。
5)图形的深度优先(depth—first)搜索法。
测试代码:
public static void main(String[] args) {
//创建一个栈
ArrayStack arrayStack = new ArrayStack(4);
Scanner scanner = new Scanner(System.in);
//控制循环变量
boolean loop=true;
while (loop){
System.out.println("show:表示显示栈");
System.out.println("exit:退出程序");
System.out.println("push:表示添加数据到栈(入栈)");
System.out.println("pop:表示从栈取出数据(出栈)");
System.out.println("请输入来进行操作");
String key=scanner.next();
switch (key){
case "show": arrayStack.list();break;
case "exit": loop=false;scanner.close();break;
case "push":
System.out.println("请输入要入栈的数据");
int i=scanner.nextInt();
arrayStack.push(i);
break;
case "pop":
try {
int res=arrayStack.pop();
System.out.printf("要出站的数据是%d",res);
} catch ( Exception e){
//打印异常信息
System.out.println(e.getMessage());
}
break;
default:break;
}
}
System.out.println("程序已经成功退出");
}
执行过程
show:表示显示栈
exit:退出程序
push:表示添加数据到栈(入栈)
pop:表示从栈取出数据(出栈)
请输入来进行操作
show
栈空,没有数据
show:表示显示栈
exit:退出程序
push:表示添加数据到栈(入栈)
pop:表示从栈取出数据(出栈)
请输入来进行操作
push
请输入要入栈的数据
1
show:表示显示栈
exit:退出程序
push:表示添加数据到栈(入栈)
pop:表示从栈取出数据(出栈)
请输入来进行操作
push
请输入要入栈的数据
2
show:表示显示栈
exit:退出程序
push:表示添加数据到栈(入栈)
pop:表示从栈取出数据(出栈)
请输入来进行操作
push
请输入要入栈的数据
3
show:表示显示栈
exit:退出程序
push:表示添加数据到栈(入栈)
pop:表示从栈取出数据(出栈)
请输入来进行操作
push
请输入要入栈的数据
4
show:表示显示栈
exit:退出程序
push:表示添加数据到栈(入栈)
pop:表示从栈取出数据(出栈)
请输入来进行操作
push
请输入要入栈的数据
5
栈满了
show:表示显示栈
exit:退出程序
push:表示添加数据到栈(入栈)
pop:表示从栈取出数据(出栈)
请输入来进行操作
pop
要出站的数据是4show:表示显示栈
exit:退出程序
push:表示添加数据到栈(入栈)
pop:表示从栈取出数据(出栈)
请输入来进行操作
pop
要出站的数据是3show:表示显示栈
exit:退出程序
push:表示添加数据到栈(入栈)
pop:表示从栈取出数据(出栈)
请输入来进行操作
show
stack[1]=2
stack[0]=1
show:表示显示栈
exit:退出程序
push:表示添加数据到栈(入栈)
pop:表示从栈取出数据(出栈)
请输入来进行操作
pop
要出站的数据是2show:表示显示栈
exit:退出程序
push:表示添加数据到栈(入栈)
pop:表示从栈取出数据(出栈)
请输入来进行操作
pop
要出站的数据是1show:表示显示栈
exit:退出程序
push:表示添加数据到栈(入栈)
pop:表示从栈取出数据(出栈)
请输入来进行操作
pop
栈空,没有数据
show:表示显示栈
exit:退出程序
push:表示添加数据到栈(入栈)
pop:表示从栈取出数据(出栈)
请输入来进行操作
exit
程序已经成功退出