“栈又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素。
1、栈的插入和删除只允许在线性表的一端进行
2、“先进后出”,“后进先出”
3、栈具有记忆功能
4、” 栈顶通常用(Top)表示,栈底通常用(Bottom)表示。
5、栈底指针不变,栈中元素随栈顶指针的变化而变化。
6、栈支持子程序调用
//测试代码自己实现就OK了 /** * 定义一个栈 */ class ArrayStack{ private Object[] stack;//栈[可以存储任何数据类型] private int index = -1;//栈帧 /** * @param maxStack 栈中元素个数 */ public ArrayStack(int maxStack){ stack = new Object[maxStack]; } /** * 栈满 */ public boolean isFull(){ return index >= stack.length-1; } /** * 栈空 */ public boolean isAir(){ return index < 0; } /** * 入栈 */ public void push(Object value){ //判断是否栈满 if (isFull()) throw new RuntimeException("栈已满!无法添加数据!"); index++; stack[index] = value; System.out.println("入栈成功:stack["+index+"] = "+stack[index]); } /** * 出栈 */ public void pop(){ if (isAir()) throw new RuntimeException("栈已空!无法出栈"); //Object objects = stack[index];//接收Top的数据 System.out.println("出栈成功,出栈的数据是:"+stack[index]); index--; } /** * 显示栈的情况【遍历栈】 */ public void list(){ if (isAir()){ System.out.println("栈是空的,无法打印数据"); return; } for (int i=index;i>=0;i--){ System.out.println("stack["+i+"] = "+stack[i]); } } }
原文:https://www.cnblogs.com/zhangzhixi/p/13542087.html