1. 程式人生 > >演算法題015 -- [Implement Stack using Queues] by java

演算法題015 -- [Implement Stack using Queues] by java

題目

    使用佇列實現堆疊的以下操作:
  • push(x) - 將元素x推入堆疊。
  • pop() - 刪除堆疊頂部的元素。
  • top() - 獲取頂部元素。
  • empty() - 返回堆疊是否為空。
    要求:
  • 必須僅使用佇列的標準操作 - 這意味著只能從尾部新增,從頭部檢視/彈出;檢視大小和判空操作是有效的。
  • 根據使用的語言,原生可能不支援佇列。 只要只使用佇列的標準操作,就可以使用list或deque(雙端佇列)來模擬佇列。
  • 您可以假設所有操作都是有效的(例如,在空堆疊上不會呼叫pop或top操作)。

分析

純粹是程式碼功底,以及對佇列和棧的理解…

程式碼

package algorithm015;

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

public class Algorithm015 {
	
	public static void main(String[] args) {
		QueueStack<Integer> qs = new QueueStack<Integer>();
		System.out.println(qs.top());
		qs.push(5);
		qs.push(-1);
		qs.push(2);
		qs.
push(3); System.out.println(qs.empty()); System.out.println(qs.top()); System.out.println(qs.pop()); System.out.println(qs.pop()); System.out.println(qs.pop()); System.out.println(qs.pop()); System.out.println(qs.pop()); System.out.println(qs.empty()); } } class QueueStack<E>
{ Queue<E> queue = new LinkedList<E>(); public E push(E item) { if(item != null) { queue.add(item); for(int i=0; i<queue.size()-1; i++) { E e = queue.poll(); queue.add(e); } } return item; } public E pop() { return queue.poll(); } public E top() { if(empty()) return null; return queue.element(); } public boolean empty() { return queue.isEmpty(); } }