package stack; import java.io.*; /** * @author Eightn0 * @create 2021-03-15 14:05 * 堆栈:一组相同数据类型的组合,具有后进先出的特性 * 应用中的堆栈:递归调用,子程序的调用等 * Java中的堆栈:用静态数组或者动态链表结构实现,但需要维持堆栈后进先出与从顶端读取数据的两个原则 * */ /*用数组声明一个堆栈*/ class StackByArray { private int[] stack;//存放堆栈的数组 private int top;//指向顶端的索引 //构造函数 public StackByArray(int stack_size) {//输入stack的容量 this.stack = new int[stack_size];//返回一个带顶端指针的静态数组型堆栈 this.top = -1; } /*压栈方法:push*/ public boolean push(int data) { if (top >= stack.length) { //若指针下移到数组最后一位,说明栈空间已满 System.out.println("堆栈已满,无法加入"); return false; } else { stack[++top] = data;//将数据放入静态数组中,并且指针上移 return true; } } /*判断是否为空:empty*/ public boolean empty() { if (top == -1) return true;//指针指向数组前,说明数组空,说明栈空 else return false; } /*出栈:pop*/ public int pop() { if (empty()) return -1;//若数组空,则没有数据可以出栈 else return stack[top--];//若数组非空,让最后进入的数据出栈,并且指针下移 } } public class Stack_01{ public static void main(String[] args) throws IOException { BufferedReader bufferedReader; int value; StackByArray stackByArray = new StackByArray(10); bufferedReader = new BufferedReader(new InputStreamReader(System.in)); System.out.println("请输入10个数据,每次以回车结束"); for (int i = 0; i < 10; i++) { value = Integer.parseInt(bufferedReader.readLine()); stackByArray.push(value); } System.out.println("=================================="); while (!stackByArray.empty()){ System.out.println("栈弹出的顺序为:"+stackByArray.pop()); } } }
堆栈的静态数组实现
最新推荐文章于 2021-07-13 17:30:16 发布