面試系列7--用兩個(gè)棧實(shí)現(xiàn)一個(gè)隊(duì)列的功能

字號(hào):

原題:
     用兩個(gè)棧實(shí)現(xiàn)一個(gè)隊(duì)列的功能?
    思路:
     假設(shè)兩個(gè)棧 A 和B,且都為空。
     可以認(rèn)為棧 A 為提供入隊(duì)列的功能,棧 B 提供出隊(duì)列的功能。
     入隊(duì)列: 入棧 A
     出隊(duì)列:
     1 如果棧B 不為空,直接彈出棧 B 的數(shù)據(jù)。
     2 如果棧 B 為空,則依次彈出棧 A 的數(shù)據(jù),放入棧 B 中,再?gòu)棾鰲?B 的數(shù)據(jù)。
    StatckOne.java
    import java.util.ArrayList;
    public class StatckOne {
    private static ArrayList al;
    public StatckOne() {
    if (al == null)
    al = new ArrayList();
    }
    public void put(Object o) {
    al.add(o);
    }
    public Object top() {
    int size = al.size();
    if (al != null) {
    if (size != 0) {
    System.out.println("StatckOne");
    return al.get(size - 1);
    } else
    System.out.println("棧中沒有對(duì)象");
    } else
    System.out.println("沒有初始化");
    System.out.println("StatckOne");
    return null;
    }
    }