1. 程式人生 > >資料結構-用陣列模擬棧

資料結構-用陣列模擬棧

棧是一種抽象資料型別,是程式設計師的工具。

棧的特點:先入後出

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 ();
	}
	
}