Title: Stack Implementations
1Stack Implementations
2Chapter Contents
- A Linked Implementation
- An Array-Based Implementation
- A Vector-Based Implementation
3A Linked Implementation
- When using a chain of linked nodes to implement a
stack - The first node should reference the stack's top
Fig. 21-1 A chain of linked nodes that implements
a stack.
4A Linked Implementation
- Data field and constructor
- Each node an instance of class Node
public class LinkedStack implements
StackInterface, java.io.Serializable private
Node topNode // references first node in
chain public LinkedStack() topNode null
// end default constructor . . .
private class Node implements java.io.Serializable
private Object data // entry in
stack private Node next // link to next
node lt Constructors and the methods getData,
setData, getNextNode, and setNextNode are
here. gt . . . // end Node
5A Linked Implementation
Fig. 21-2 (a) A new node that references the top
of the stack (b) the new node is now at the top
of the stack.
6A Linked Implementation
Fig. 21-3 The stack after the first node in the
chain is deleted.
7An Array-Based Implementation
- When using an array to implement a stack
- The array's first element should represent the
bottom of the stack - The last occupied location in the array
represents the stack's top - This avoids shifting of elements of the array if
it were done the other way around
8An Array-Based Implementation
Fig. 21-4 An array that implements a stack its
first location references (a) the top of the
stack (b) the bottom of the stack
9An Array-Based Implementation
- Data fields and constructors
public class ArrayStack implements
StackInterface, java.io.Serializable private
Object stack // array of stack
entries private int topIndex // index of top
entry private static final int DEFAULT_MAX_SIZE
50 public ArrayStack() stack new
ObjectDEFAULT_MAX_SIZE topIndex -1 //
end default constructor public ArrayStack(int
maxSize) stack new ObjectmaxSize topInde
x -1 // end constructor . . .
10An Array-Based Implementation
Fig. 21-5 Another array-based stack after top
removed by (a) decrementing topIndex (b) setting
stacktopIndexnull and then decrementing
topIndex
11A Vector-Based Implementation
- When using a vector to implement a stack
- Vector's first element should represent the
bottom of the stack - Last occupied location in the vector represents
the stack's top - Based on an array that can be expanded
dynamically - Performance similar to array-based implementation
12A Vector-Based Implementation
- Data fields and constructors
import java.util.Vectorpublic class VectorStack
implements StackInterface, java.io.Serializable
public VectorStack() stack new Vector() //
vector doubles in size if necessary // end
default constructor public VectorStack(int
maxSize) stack new Vector(maxSize) //
end constructor . . .