public class LinkStack<T> {
    private Node head;
    private int N;

    public static void main(String[] args) {
        String brackets = ")((我是)哈哈";
        String left = "(";
        String right = ")";

        //()匹配问题
        LinkStack linkStack = new LinkStack();
        for (int i = 0; i < brackets.length(); i++) {
            String temp = brackets.charAt(i)+ "";
            if (temp.equals(left)){ //判断左括号
                linkStack.push(temp);
                System.out.println("入 "+linkStack.size());
            }else if (temp.equals(right)){ //判断右括号
                if (linkStack.size() == 0) {
                    System.out.println("匹配失败");
                    return;
                }
                System.out.println("出 "+linkStack.size());
                linkStack.pop();
                System.out.println(i+1);
            }
        }
        if (linkStack.size() == 0) { //判断栈里还有无 (
            System.out.println("匹配成功");
        }else {
            System.out.println("匹配失败");
        }
    }
    //结点类
    private class Node {
        public T item;
        public Node next;

        public Node(T item, Node next) {
            this.item = item;
            this.next = next;
        }
    }

    //初始化
    public LinkStack() {
        this.head = new Node(null, null);
        this.N = 0;
    }

    //判断栈是否为空
    public boolean isempty() {
        return N == 0;
    }

    public int size() {
        return N;
    }

    //压栈
    public void push(T t) {
        //创建oldItem --> head.next = null
        Node oldItem = head.next;
        //创建新节点
        Node newNode = new Node(t, null);
        // head 指向 newNode
        head.next = newNode;
        // newNode --> oldItem =null
        newNode.next = oldItem;
        N++;
    }

    //弹栈
    public T pop() {
        //头结点的下一个(新插入的)
        Node oldItem = head.next;
        //判断size
        if (oldItem == null) {
            return null;
        }
        //head.next 指向 head.next.next
        head.next = oldItem.next;
        N--;
        return oldItem.item;
    }
}
最后修改:2022 年 11 月 09 日
如果觉得我的文章对你有用,请随意赞赏