1. 程式人生 > >用兩個棧實現一個隊列

用兩個棧實現一個隊列

用兩個棧 new col oid code public blog 是否為空 pty

思路:

使用兩個棧實現一個隊列,棧A用作插入棧,棧B用作彈出棧。

隊列的特點為先進先出。

  1. 入列時,直接入棧A;
  2. 出隊列時先判斷棧B是否為空,若為空,則依次彈出棧A中的數據入棧B,再彈出棧B數據;若不為空直接彈出棧B數據。

代碼如下:

public class QueueByTwoStack<E> {

    private Stack<E> s1 = new Stack<>();
    private Stack<E> s2 = new Stack<>();
  
    public  void enqueue(E e) {
        s1.push(e);
    }

    
public E dequeue() { if (s2.isEmpty()) { while (!s1.isEmpty()) { s2.push(s1.pop()); } } return s2.pop(); } public boolean isEmpty() { return s1.isEmpty() && s2.isEmpty(); } }

用兩個棧實現一個隊列