Loading

Stack 容器

Stack 容器介绍

Stack 栈容器,是 Vector 的一个子类,它实现了一个标准的后进先出(LIFO:Last In Frist Out)的栈。

Stack 特点是

后进先出。它通过 5 个操作方法对 Vector 进行扩展.

操作栈的方法

Stack 的使用

public class StackTest {
    public static void main(String[] args) {
        //实例化栈容器
        Stack < String > stack = new Stack < > ();
        //将元素添加到栈容器中
        stack.push("a");
        stack.push("b");
        stack.push("c");
        //判断栈容器是否为空
        System.out.println(stack.empty());
        //查看栈顶元素
        System.out.println(stack.peek());
        //返回元素在栈容器中的位置
        System.out.println(stack.search("c"));
        //获取栈容器中的元素
        String p1 = stack.pop();
        System.out.println(p1);
        String p2 = stack.pop();
        System.out.println(p2);
        String p3 = stack.pop();
        System.out.println(p3);
    }
}

Stack 的使用案例

判断元素的对称性
String str="...{.....[....(....)...]....}..(....)..[...]...";

//匹配符号的对称性
public void symmetry() {
    String str = "...{.....[....(....)...]....}..(....)..[...].(.).";
    //实例化 Stack
    Stack < String > stack = new Stack < > ();
    //假设修正法
    boolean flag = true; //假设是匹配的
    //拆分字符串获取字符
    for (int i = 0; i < str.length(); i++) {
        char c = str.charAt(i);
        if (c == '{') {
            stack.push("}");
        }
        if (c == '[') {
            stack.push("]");
        }
        if (c == '(') {
            stack.push(")");
        }
        //判断符号是否匹配
        if (c == '}' || c == ']' || c == ')') {
            if (stack.empty()) {
                //修正处理
                flag = false;
                break;
            }
            String x = stack.pop();
            if (x.charAt(0) != c) {
                //修正处理
                flag = false;
                break;
            }
        }
    }
    if (!stack.empty()) {
        //修正处理
        flag = false;
    }
    System.out.println(flag);
}
posted @ 2023-01-16 21:49  听风blog  阅读(36)  评论(0编辑  收藏  举报