📄 stackar.java
字号:
package DataStructures;
// StackAr class
//
// CONSTRUCTION: with or without a capacity; default is 10
//
// ******************PUBLIC OPERATIONS*********************
// void push( x ) --> Insert x
// void pop( ) --> Remove most recently inserted item
// Object top( ) --> Return most recently inserted item
// Object topAndPop( ) --> Return and remove most recently inserted item
// boolean isEmpty( ) --> Return true if empty; else false
// boolean isFull( ) --> Return true if full; else false
// void makeEmpty( ) --> Remove all items
// ******************ERRORS********************************
// Overflow and Underflow thrown as needed
/**
* Array-based implementation of the stack.
* @author Mark Allen Weiss
*/
public class StackAr
{
/**
* Construct the stack.
*/
public StackAr( )
{
this( DEFAULT_CAPACITY );
}
/**
* Construct the stack.
* @param capacity the capacity.
*/
public StackAr( int capacity )
{
theArray = new Object[ capacity ];
topOfStack = -1;
}
/**
* Test if the stack is logically empty.
* @return true if empty, false otherwise.
*/
public boolean isEmpty( )
{
return topOfStack == -1;
}
/**
* Test if the stack is logically full.
* @return true if full, false otherwise.
*/
public boolean isFull( )
{
return topOfStack == theArray.length - 1;
}
/**
* Make the stack logically empty.
*/
public void makeEmpty( )
{
topOfStack = -1;
}
/**
* Get the most recently inserted item in the stack.
* Does not alter the stack.
* @return the most recently inserted item in the stack, or null, if empty.
*/
public Object top( )
{
if( isEmpty( ) )
return null;
return theArray[ topOfStack ];
}
/**
* Remove the most recently inserted item from the stack.
* @exception Underflow if stack is already empty.
*/
public void pop( ) throws Underflow
{
if( isEmpty( ) )
throw new Underflow( );
theArray[ topOfStack-- ] = null;
}
/**
* Insert a new item into the stack, if not already full.
* @param x the item to insert.
* @exception Overflow if stack is already full.
*/
public void push( Object x ) throws Overflow
{
if( isFull( ) )
throw new Overflow( );
theArray[ ++topOfStack ] = x;
}
/**
* Return and remove most recently inserted item from the stack.
* @return most recently inserted item, or null, if stack is empty.
*/
public Object topAndPop( )
{
if( isEmpty( ) )
return null;
Object topItem = top( );
theArray[ topOfStack-- ] = null;
return topItem;
}
private Object [ ] theArray;
private int topOfStack;
static final int DEFAULT_CAPACITY = 10;
public static void main( String [ ] args )
{
StackAr s = new StackAr( 12 );
try
{
for( int i = 0; i < 10; i++ )
s.push( new MyInteger( i ) );
}
catch( Overflow e ) { System.out.println( "Unexpected overflow" ); }
while( !s.isEmpty( ) )
System.out.println( s.topAndPop( ) );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -