//---------------------------------------------------------------- // ArrayBoundedStack.java by Dale/Joyce/Weems Chapter 2 // // Implements StackInterface using an array to hold the // stack elements. // // Two constructors are provided: one that creates an array of a // default size and one that allows the calling program to // specify the size. //---------------------------------------------------------------- public class ArrayBoundedStack<T> implements StackInterface<T> { protected final int DEFCAP = 100; // default capacity protected T[] elements; // holds stack elements protected int topIndex = -1; // index of top element in stack public ArrayBoundedStack() { elements = (T[]) new Object[DEFCAP]; } public ArrayBoundedStack(int maxSize) { elements = (T[]) new Object[maxSize]; } public void push(T element) { // Throws StackOverflowException if this stack is full, // otherwise places element at the top of this stack. if (isFull()) throw new StackOverflowException("Push attempted on a full stack."); else { topIndex++; elements[topIndex] = element; } } public void pop() { // Throws StackUnderflowException if this stack is empty, // otherwise removes top element from this stack. if (isEmpty()) throw new StackUnderflowException("Pop attempted on an empty stack."); else { elements[topIndex] = null; topIndex--; } } public T top() { // Throws StackUnderflowException if this stack is empty, // otherwise returns top element of this stack. T topOfStack = null; if (isEmpty()) throw new StackUnderflowException("Top attempted on an empty stack."); else topOfStack = elements[topIndex]; return topOfStack; } public boolean isEmpty() { // Returns true if this stack is empty, otherwise returns false. return (topIndex == -1); } public boolean isFull() { // Returns true if this stack is full, otherwise returns false. return (topIndex == (elements.length - 1)); } }
Email Me |
Office Hours |
My Home Page |
Department Home |
MCC Home Page
© Copyright Emmi Schatz 2017