首页 > 其他 > 详细

List实现栈结构

时间:2020-01-02 16:51:55      阅读:84      评论:0      收藏:0      [点我收藏+]
栈是一种执行“后进先出”算法的数据结构,栈的特点是先进后出。
我们使用java中的List集合实现一个栈数据结构。
技术分享图片
package com.prolog.api.webservicetest;/*
 * @auther 顶风少年
 * @mail dfsn19970313@foxmail.com
 * @date 2020-01-02 11:41
 * @notify
 * @version 1.0
 */

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Stack {
    private ArrayList<String> stackList = new ArrayList<>();

    //添加元素到栈顶
    public void add(String... integers) {
        List<String> integers1 = Arrays.asList(integers);
        stackList.addAll(integers1);
    }

    //弹出栈顶元素
    public String popup() {
        if (stackList.size() == 0) {
            return "-1";
        }
        return stackList.remove(stackList.size() - 1);
    }

    //返回栈顶元素,不是弹出
    public String getTop() {
        if (stackList.size() == 0) {
            return "-1";
        }
        return stackList.get(stackList.size() - 1);
    }

    //判断栈是否为空
    public boolean isEmpty() {
        return stackList.isEmpty();
    }

    //返回栈内元素个数
    public Integer getSize() {
        return stackList.size();
    }

    //清空栈
    public void clearStack() {
        stackList.clear();
    }
}
View Code

需要注意的是,弹栈和获取栈顶元素时,需要判断栈内是否有元素,否则会抛出异常。

栈的应用

1 从字符串中判断某个字符是否是成对出现的。

技术分享图片
    //应用场景:设括号必须成对出现。用栈互相抵消
    @Test
    public void t1() throws Exception {
        Stack stack = new Stack();
        String str = "(a+b)*(a-c)";
        //循环字符串
        for (int i = 0; i < str.length(); i++) {
            //拿到字符串的每一个元素
            String s = String.valueOf(str.charAt(i));
            if (s.equals("(")) {//如果是 (  则压栈
                stack.add(s);
            } else if (s.equals(")")) { //如果是  )则判断当前栈内是否有元素,如果没有则说明有问题
                if (stack.isEmpty()) {
                    System.out.println("字符串不合法");
                    return;
                } else { //当前栈有元素只可能是  ( 此时弹出
                    stack.popup();
                }
            }
        }
        System.out.println("字符串合法");
    }
View Code

 

List实现栈结构

原文:https://www.cnblogs.com/zumengjie/p/12133370.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!