栈(2)

102 阅读3分钟

“携手创作,共同成长!开启掘金成长之旅!这是我参与「掘金日新计划 · 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

程序已经成功退出