栈————关于出栈序列

首先了解一下栈,栈的基本使用:
栈是一种“后进先出”的数据结构,只能在一端进行插入(压栈)、删除(出栈)的数据操作。
 1 Stack的基本使用
 2 初始化
 3 Stack stack=new Stack
 4 判断是否为空
 5 stack.empty()
 6 取栈顶值(不出栈)
 7 stack.peek()
 8 进栈(从顶部进)
 9 stack.push(Object);
10 出栈(从底部出)
11 stack.pop();
12  
13 实例:
14 public class Test01 {
15     public static void main(String[] args) {
16         Stack stack=new Stack();
17         //1.empty()栈是否为空
18         System.out.println(stack.empty());
19         //2.peek()栈顶值    3.进栈push()
20         stack.push(new Integer(1));
21         stack.push("b");
22         System.out.println(stack.peek());
23         //4.pop()出栈
24         stack.pop();
25         System.out.println(stack.peek());
26         
27     }
28 }

用一个动画效果演示入栈出栈:

入栈序列是1、2、3、4,入完之后只能4先出栈

此时只能4先出栈,321都有东西压在头顶是出不去的。

 

 
出栈顺序有句绕口令是“后出先入逆序”,理解一下什么是后出先入逆序:

比如序列:3 1 2 4:

  1. 选择任意元素,这里选择3.
  2. 比3后出的有三个元素,124
  3. 比3先入的有两个元素,12
  4. 12不是逆序的
  5. 所以这个序列是不合法的出栈序列

4个元素一共有24种排序,其中合法的出栈序列有14种(加黑部分):


解释下为什么可以4不第一个出,1、2、3也可以第一个出栈:

  1. 以3214为例
  2. 入栈的顺序可以是:1、2、3
  3. 这时4还没有入栈 ,而3先出栈了
  4. 接着2、1出栈了
  5. 4最后入栈,再出栈

 

posted @ 2019-06-27 10:47  TangXinPing  阅读(1727)  评论(0编辑  收藏  举报