第一章 栈的实现(数组)java

本文介绍了栈的基本规则——先进先出,并详细阐述了栈在子程序调用、递归处理、表达式转换、二叉树遍历和图的深度优先搜索等场景中的应用。同时,通过一个具体的Java代码示例展示了如何使用数组实现栈,包括入栈、出栈和遍历栈元素的方法。
摘要由CSDN通过智能技术生成

1.栈的主要规则

先进先出

2.栈的主要用途

1.子程序的调用,在跳出子程序前,会将下个指令的地址存出到堆栈当中,直到子程序执行完毕后再将地址取出,以后到原来的程序中。

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

3.表达式的转换(中缀前缀后缀)重点

4.二叉树的遍历

5.图的深度优先搜索法。

3.栈的实现:

主体思路与实现:栈的实现与数组实现队列相似,相同点在于实现底层的数据结构都是数组,不同点在于实现时指针定义不同,队列需要两个指针但是栈实现只需要一个指针即top(指向钱顶的指针)指针。当入栈时只需要让top++即,出栈时只需要让top--即可

具体实现如下:

public class ArraysStackDemo {
    int top=-1;//栈顶指针
    int[] stack;//栈数组
    int maxsize;//数组最大长度
    public ArraysStackDemo(int maxsize){
        this.maxsize=maxsize;
        stack=new int[maxsize];
    }
    public void push(int data){//入栈方法
        if(maxsize-1==top){
            System.out.println("栈已满,不可再次加入");
        }
        top++;
        stack[top]=data;
    }
    public void pop(){//出栈方法
        if (top==-1) {
            throw new RuntimeException("栈为空,不可取出~");
        }
        System.out.println(stack[top--]);
    }
    public void print(){//栈遍历并打印
        if(top==-1){
            System.out.println("栈为空不可打印");
            return;
        }
        for(int i=top;i>=0;i--){
            System.out.print(stack[i]+"->");
        }
    }
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值