数据结构-用数组模拟栈

来源:互联网 发布:getdata软件 编辑:程序博客网 时间:2024/05/21 03:24

栈是一种抽象数据类型,是程序员的工具。

栈的特点:先入后出

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--] ; //取出栈顶元素后索引-1return 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 ();}}