棧實現佇列和佇列實現棧
阿新 • • 發佈:2018-12-21
1、棧實現佇列
棧結構:先進後出(FILO);
佇列結構:先進先出(FIFO);
所以想要用棧實現佇列的效果,自然而然地就想到兩個棧實現一個佇列;
程式碼如下:
兩個棧,一個入隊,一個出隊
public class QueueOfStack { private Stack mS1 = new Stack(); //進棧 private Stack mS2 = new Stack(); //出棧 /** * 進佇列 * @param e */ public void push(Object e) { mS1.push(e); } /** * 出佇列 * @return */ public Object pop() { if(mS2.isEmpty()) { while (!mS1.isEmpty()) { mS2.push(mS1.pop()); } } return mS2.pop(); } }
2、佇列實現棧
出棧時,先pop到最後插入的元素再pop,即可實現FIFLO的效果
public class StackOfQueue { private LinkedList<Integer> queue = new LinkedList(); /** * 進棧 * @param e */ public void push(int e) { queue.add(e); } /** * 出棧 * @return */ public Integer pop() { if(!queue.isEmpty()) { while (queue.size()>1) { queue.pop(); } return queue.pop(); } return null; } public Integer peek() { return queue.peek(); } }