package aima.core.util.datastructure; import java.util.Collection; import java.util.LinkedList; /** * Artificial Intelligence A Modern Approach (3rd Edition): pg 80.<br> * <br> * Last-in, first-out or LIFO queue (also known as a stack), which pops the * newest element of the queue; * * @author Ravi Mohan * @author Ciaran O'Reilly */ public class LIFOQueue<E> extends LinkedList<E> implements Queue<E> { private static final long serialVersionUID = 1; public LIFOQueue() { super(); } public LIFOQueue(Collection<? extends E> c) { super(c); } // // START-Queue public boolean isEmpty() { return 0 == size(); } @Override public E pop() { return poll(); } public void push(E element) { addFirst(element); } public Queue<E> insert(E element) { if (offer(element)) { return this; } return null; } // END-Queue // // // START-Override LinkedList methods in order for it to behave in LIFO // order. @Override public boolean add(E e) { addFirst(e); return true; } @Override public boolean addAll(Collection<? extends E> c) { return addAll(0, c); } @Override public boolean offer(E e) { add(0, e); return true; } // End-Override LinkedList methods in order for it to behave like a LIFO. // }