/**
* A Quack of objects
*
* This implementation uses linked memory
*
* @version 1.0
* @author Prof. David Bernstein, James Madison University
*/
public class QuackCopy
{
private Node first, last;
/**
* Construct a new (empty) Quack
*/
public Quack()
{
first = null;
last = null;
}
/**
* Pep an Object off of this Quack
*
* @return The Object
*/
public Object pep()
{
Node temp;
Object value;
value = null;
if (first != null)
{
value = first.value;
if (first == last)
{
first = null;
}
else
{
temp = last;
while (temp.next != first)
{
temp = temp.next;
}
first = temp;
first.next = null;
}
}
if (first == null) last = null;
return value;
}
/**
* Pip an Object off of this Quack
*
* @return The Object
*/
public Object pip()
{
Object value;
if (last != null)
{
value = last.value;
last = last.next;
}
else
{
value = null;
}
if (last == null) first = null;
return value;
}
/**
* Push an Object onto this Quack
*
* @param anObject The Object to push
*/
public void push(Object anObject)
{
Node temp;
temp = new Node();
temp.value = anObject;
temp.next = last;
last = temp;
if (first == null) first = last;
}
}
