|
Enumerating a Stack Running the Program
| |
Before we talk about inner or nested classes, let's show an example of how we
might implement something without those features.
Here's a very simple Stack class:
package examples;
/**
* Stack implements a simple stack of integers
*/
public class Stack
{
/**
* Creates a stack of specified number of elements
*/
public Stack(int size)
{
m_stackData = new int[size];
}
/**
* Pushes an integer value on the stack,
* or throws an exception, if insufficient space
*/
public void push(int value) throws IllegalStateException
{
if (m_next >= m_stackData.length)
throw new IllegalStateException("Stack full");
m_stackData[m_next++] = value;
}
/**
* Returns whether the stack is currently empty
*/
public boolean isEmpty()
{
return (m_next == 0);
}
/**
* Pops the top int value off the stack,
* or throws an exception if the stack is empty
*/
public int pop() throws IllegalStateException
{
if (isEmpty())
throw new IllegalStateException("Stack empty");
return m_stackData[--m_next]; // top item on stack
}
/**
* Returns the current size of the stack
*/
public int getStackSize()
{
return m_next;
}
/**
* Returns the maximum size of the stack
*/
public int getMaxStackSize()
{
return m_stackData.length;
}
/**
* Return the value of the specified item in the stack
* or throws an exception if the index specified is invalid.
*/
public int get(int index) throws IllegalArgumentException
{
if (index < 0 || index >= getStackSize())
throw new IllegalArgumentException("index = " + index);
return m_stackData[index];
}
private int[] m_stackData;
private int m_next = 0; // Index of last item in stack
}
|
|