import java.util.*;
/**
*
class Stack is a simple implementation of a
* stack data structure. Basic operations are: pop, push,
* and top. The stack is implemented using a Vector.
*
* @author G.D.Thurman
* @version 99.09.24
* @see Vector
*/
public class Stack implements Csxxx_Containers {
private Vector elems;
public Stack() { this(DFLT_NELEMENTS); }
public Stack(int len) { elems = new Vector(len); }
public boolean push(Object elem) {
boolean rv;
if (elems.size() == elems.capacity())
rv = false;
else {
elems.addElement(elem);
rv = true;
}
return rv;
}
public Object pop() {
Object rv;
int size = elems.size();
if (size == 0)
rv = null;
else {
rv = top();
elems.removeElementAt(size - 1);
}
return rv;
}
public Object top() {
return elems.size() <= 0 ? null : elems.elementAt(elems.size()-1);
}
public int size() { return elems.size(); }
public int capacity() { return elems.capacity(); }
public void clear() { elems.removeAllElements(); }
public boolean isEmpty() { return elems.size() == 0; }
public boolean isFull() { return elems.size() == elems.capacity(); }
public String toString() {
int size = elems.size();
String s = new String("stack contents:" + "\n" +
"===============\n");
for (int i = size-1; i >= 0; i--)
s += "\t" + elems.elementAt(i) + "\n";
s += "size: " + elems.size() + "; capacity: " + elems.capacity();
return s;
}
public static void main(String[] argv) {
Stack s = new Stack();
for (int i = 0; i < argv.length && s.push(argv[i]); i++)
;
System.out.println(s);
if (!s.isEmpty()) {
System.out.println("\npop: " + s.pop());
System.out.println("top: " + s.top());
System.out.println("size: " + s.size());
System.out.println("capacity: " + s.capacity());
}
s.clear();
System.out.println("\n*** stack cleared\n\n" + s);
//s.pop();
}
}