public class ListStack implements Stack
{
private Link top;
public ListStack()
{
top = null;
}
public void push(Object elem)
{
top = new Link(elem, top);
}
public boolean empty()
{
return top == null;
}
public Object pop()
{
Object poppedvalue;
if (top == null)
return null;
poppedvalue = top.element();
top = top.next();
return poppedvalue;
}
public String toString()
{
Link stackPtr = top;
String result = "[";
if (stackPtr != null)
{
result = result + top.element();
for (stackPtr = stackPtr.next; stackPtr != null; stackPtr = stackPtr.next)
{
result = result + "," + stackPtr.element();
}
}
result = result + "]";
return result;
}
private class Link
{
private Object element;
private Link next;
public Link(Object newelement)
{
element = newelement;
next = null;
}
public Link(Object newelement, Link newnext)
{
element = newelement;
next = newnext;
}
public Link next()
{
return next;
}
public Object element()
{
return element;
}
public void setNext(Link newnext)
{
next = newnext;
}
public void setElement(Object newelement)
{
element = newelement;
}
}
}