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 Before and after final line in push()
(page 479)
6A Linked Implementation
Fig. 21-3 After a pop() (page 480)
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
bad...
good...
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 pr
ivate Object stack private int topIndex
// index of top entry private static final int
DEFAULT_MAX_SIZE 50 public ArrayStack() sta
ck new ObjectDEFAULT_MAX_SIZE topIndex
-1 // end default constructor public
ArrayStack(int maxSize) stack new
ObjectmaxSize topIndex -1 // end
constructor . . .
10An Array-Based Implementation
Sloppy...
...Better
Fig. 21-5 pop() methods (a) only decrement
topIndex (b) set stacktopIndexnull then
decrement 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() // vector doubles in size
if necessary stack new Vector()
public VectorStack(int maxSize) stack new
Vector(maxSize) . . .