1. 程式人生 > 其它 >事件捕獲和事件冒泡

事件捕獲和事件冒泡

import java.util.LinkedList;
import java.util.Queue;

public class Algorithm {

    public static void main(String[] args) {

        MyStack myStack = new MyStack();

        for (int i = 0; i < 10; i++) {

            myStack.push(i);
            if (i % 2 == 0){
                myStack.pop();
            }
            System.out.println(myStack.top());
        }
    }
}

class MyStack{

    /**
     * 定義一個存放元素的佇列
     */
    Queue<Integer> q1;

    /**
     * 儲存棧頂元素
     */
    int topElement;

    public MyStack() {

        /**
         * Queue類是LinkedList類的父類
         */
        q1 = new LinkedList<>();

    }

    public void push(int x) {

        q1.add(x);
        topElement = x;
    }

    public int pop() {

        /**
         * 定義一個輔助佇列,負責儲存除棧頂元素以外的所有元素
         */
        Queue<Integer> q2 = new LinkedList<>();

        while (q1.size() > 1) {

            /**
             * 每次轉移元素之前,儲存一下當前的元素,最後一次儲存的值就是此次pop後的新棧頂元素
             */
            topElement = q1.peek();
            q2.add(q1.remove());
        }

        int tem = q1.remove();
        q1 = q2;

        return tem;
    }

    public int top() {

        return topElement;
    }

    public boolean empty() {

        return q1.isEmpty();
    }
}