Java中顺序栈的实现原理是什么
创始人
2024-12-23 18:40:37
0次

什么是栈

1.栈的英文是stack

2.栈是一个先入后出的有序列表

3.栈是限制线性表元素的插入和删除只能在线性表的同一端进行的一种特殊的线性表,允许插入和删除的一端是,为变化的一端,成为栈顶,另外的一端为固定的一端为栈底

4.栈的定义可知,最先放入栈中的元素在栈底,最后放入的元素在栈顶,而删除的情况刚好相反,最后放入的元素先删除,最先放入的元素后删除

栈的应用场景

1.子程序的调用,在跳向子程序之前会先将下一条指令的地址存放在堆栈中,直到子程序执行后再将地址取出,最后回到原来的程序之中

2.递归的调用,和子程序的调用类似,只是出了存储下一个指令的地址外,也将参数、区域变量、等数据压入栈中

3.表达式的转换与求值

4.二叉树的遍历

5.图形的深度优先搜索

代码

栈

package stack;public class ArrayStack {  private int maxSize;//最大值  private int[] stack;//栈  private int top=-1;//栈顶    //构造器  public ArrayStack(int maxSize) {    this.maxSize=maxSize;    stack=new int[this.maxSize];  }    //栈满  public boolean isFull() {    return top==maxSize-1;  }    //栈空    public boolean isEmpty() {    return top==-1;  }    //入栈-push  public void push(int value) {    //先判断是否栈满了    if(isFull()) {      System.out.println("栈已经满了~");      return;    }else {      top++;      stack[top]=value;    }  }    //出栈-pop  public int pop() {    if(isEmpty()) {      throw new RuntimeException("栈已经空了~");    }    int value=stack[top];    top--;    return value;  }    //遍历栈    public void list() {    if(isEmpty()) {      System.out.println("栈空,没有数据~");    }    for(int i=top;i>=0;i--) {      System.out.printf("stack[%d]=%d\n",i,stack[i]);    }  }}

测试类

package stack;import java.util.Scanner;public class TestArrayList {  public static void main(String[] args) {    // TODO Auto-generated method stub    ArrayStack stack=new ArrayStack(4);    String key="";    boolean loop=true;    Scanner scanner=new Scanner(System.in);    while(loop) {      System.out.println("show:显示栈");      System.out.println("exit:退出测试");      System.out.println("push:压栈");      System.out.println("pop:出栈");      System.out.println("请输入你的选择:");      key=scanner.next();      switch (key) {      case "show":        stack.list();        break;      case "push":        System.out.println("请输入一个数:");        int value=scanner.nextInt();        stack.push(value);        break;      case "pop":        try {          int res=stack.pop();          System.out.printf("出栈的元素为:%d\n",res);        } catch (Exception e) {          // TODO: handle exception          System.out.println(e.getMessage());        }        break;      case "exit":        scanner.close();        loop=false;        break;      default:        break;      }    }    System.out.println("程序退出!");  }}

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...