資料結構-用陣列模擬棧
阿新 • • 發佈:2018-12-23
棧是一種抽象資料型別,是程式設計師的工具。
棧的特點:先入後出
push操作示意圖:
(圖是從浙大的資料結構慕課視訊上截得)
pop:
程式碼:
/*
* 使用陣列實現棧
*
* 棧的特點:先入後出
*
* 2017年11月29日20:08:56
*
*/
public class ArrayStack
{
private int [] arr ;
private int maxSize ;//指定陣列長度
private int Top ;//棧頂(索引)
//初始化棧
public ArrayStack ( int maxSize )
{
this.maxSize = maxSize ;
arr = new int [maxSize];
Top = -1 ;//代表當前棧中沒有元素
}
//入棧
public void push ( int data )
{
//棧滿了就提示並直接返回
if ( isFull () )
{
System.out.println ( "Sorry , 棧滿了" );
return ;
}
arr [++Top] = data ;//入棧
}
//出棧
public int pop ()
{
// = -1 說明棧是空的
if ( isEmpty () )
{
System.out.println ( "當前棧中沒有元素!" );
return 0;
}
int temp = arr [Top--] ; //取出棧頂元素後索引-1
return temp ;//返回棧頂元素
}
//判斷是否滿棧
public boolean isFull ()
{
return Top == maxSize - 1;//maxSize指的是陣列長度,-1後表示實際索引範圍
}
//判斷棧是否為空
public boolean isEmpty ()
{
return Top == -1 ;
}
//遍歷
public void display ()
{
if ( isEmpty () )
{
System.out.println ( "棧是空的" );
return ;
}
//遍歷順序: 從頂到底
System.out.println ( "Top -> bottom" );
for ( int i = Top ; i >= 0 ; i -- )
{
System.out.print ( arr [i] + " " );
}
System.out.println ();
}
}