棧是一種抽象數據類型,是程序員的工具。
棧的特點:先入後出
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 ();
}
}