package chapter8;
import java.util.*;
public class Stack {

    private Deque deque=new ArrayDeque();
	private int capacity;
	
	public Stack(int capacity)
	{
		this.capacity=capacity;
	}
	
	public boolean push(Object o)
	{
		if(deque.size()+1>capacity)
		{
			return false;
		}
		return deque.offerLast(o);
	}
	
	public Object pop()
	{
		return deque.pollLast();
	}
	
	public Object peek()
	{
		return deque.peekLast();
	}
	
	public int size()
	{
		return deque.size();
	}
	
	public void query()
	{
		Iterator iterator=deque.iterator();
		while(iterator.hasNext())
		{
			System.out.print(iterator.next()+" ");
		}
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner=new Scanner(System.in);
		Stack stack=new Stack(5);
		
		while(true)
		{
			System.out.println("請輸入push、pop、peek、query任一");
			switch(scanner.nextLine())
			{
				case "push":
					if(stack.push(new String(scanner.nextLine())))
					{
						System.out.println("push一個物件");
					}else
					{
						System.out.println("push失敗");
					}
					break;
				case "pop":
					System.out.println(stack.pop());
					break;
				case "peek":
					System.out.println(stack.peek());
					break;
				case "size":
					System.out.println(stack.size());
				case "query":
					stack.query();
					break;
			}
		}
	}
}
