數據結構-用數組模擬棧

棧是一種抽象數據類型,是程序員的工具。

棧的特點:先入後出

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



發佈了43 篇原創文章 · 獲贊 25 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章