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(); } }