package edu.princeton.cs.algs4.growingtree.framework;
/*
* @(#)WaitingActionList.java
*
* Last Modified: 9/15/01
*/
import java.awt.geom.AffineTransform;
import java.util.Collection;
import java.util.LinkedList;
/**
* Linked list implementation of the List interface containing String actions and accompanying Object elements. Implements all
* optional list operations, but only permits a String
with Object
insertion. In addition to implementing the List interface,
* the WaitingActionList class extends the uniformly named methods within LinkedList to
* get, remove and insert an element at the
* beginning and end of the list. These operations allow this list to be
* used as a stack, queue, or double-ended queue (deque).
*
* The primary purpose of the class is for the development of nextAction,
* which calls the waitingAction
method for the headelement
passed and the
* next action and accompanying Object element.
*
* @author Corey Sanders
* @version 1.4 9/15/01
*/
public class WaitingActionList
{
/**
* LinkedList holding the (new Integer(0)));
}
/**
* Appends the given element) {
elements.add(element);
return actions.add(action);
}
/**
* Inserts the specified element) throws IndexOutOfBoundsException {
elements.add(index, element);
actions.add(index, action);
}
/**
* Inserts the given element) {
actions.addFirst(action);
elements.addFirst(element);
}
/**
* Appends the given element) {
actions.addLast(action);
elements.addLast(element);
}
/**
* Gets the given headTree) {
String action = actions.removeFirst();
ActionElementType element = elements.removeFirst();
headTree.waitingAction(action, element);
}
}
String
actions for the WaitingActions.
*/
private LinkedListObject
elements for the WaitingActions.
*/
private LinkedListString
at the end of this list.
*
* @param action the String
representing an action, to be inserted at the beginning of this list.
*
* @return true (as per the general contract of
* Collection.add).
*/
public boolean add(String action) {
return this.add(action, new ActionElementTypeString
and Object
at the end of this list.
*
* @param action the String
representing an action, to be inserted at the beginning of this list.
* @param element the Object
to be inserted in reference to the action.
*
* @return true (as per the general contract of
* Collection.add).
*/
public boolean add(String action, ActionElementTypeString
and Object
at the specified position in this list.
* Shifts the String
and Object
currently at that position (if any) and any
* subsequent elements to the right (adds one to their indices).
*
* @param index the integer index representing the location to add the action and element.
* @param action the String
representing an action, to be inserted at the beginning of this list.
* @param element the Object
to be inserted in reference to the action.
*
* @throws IndexOutOfBoundsException if the specified index is out of
* range (index < 0 || index > size()).
*/
public void add(int index, String action, ActionElementTypeString
and Object
at the beggining of this list.
*
* @param action the String
representing an action, to be inserted at the beginning of this list.
* @param element the Object
to be inserted in reference to the action.
*/
public void addFirst(String action, ActionElementTypeString
and Object
at the end of this list.
*
* @param action the String
representing an action, to be inserted at the end of this list.
* @param element the Object
to be inserted in reference to the action.
*/
public void addLast(String action, ActionElementTypeString
of the action at the beggining of this list.
*
* @return action the String
representing the first action.
*/
public String getFirstAction() {
return actions.getFirst();
}
/**
* Calls the next action of the ObjectHead
headelement, using the waitingAction command.
* The call to waitingAction
always passes the element, even if the element is unnecssary to
* that operations.
*
* @param headTree the TreeHead
element of the Tree
to which the action occurs.
*/
public void nextAction(TreeHead