JAVA用数组模拟栈

JAVA用数组模拟栈(记录)



前言

用数组模拟栈
栈是后进先出
比链表简单好多φ(゜▽゜*)♪
练习之路☞acwing


一、创建栈

class arrayStack{
    int size;//栈的大小
    int[] stack;// 数据放在数组中
    int top=-1;//栈顶,初始值为-1

    public arrayStack(int size) {
        this.size = size;
        stack=new int[this.size];
    }
  }

二、栈的方法

//判断栈满
    public boolean isFull(){
        return top==size-1;

    }

    //判断栈空
    public boolean isEmpty(){
        return top==-1;
    }

    //入栈
    public void push(int value){
        //永远都要先判断是否栈满
        if (isFull()){
            System.out.println("栈满,不能存数据哦");
            return;
        }
        top++;//相当于指针,指到哪里数据存到哪里
        stack[top]=value;
    }

    //出栈
    public int pop(){
        if (isEmpty()){
//            System.out.println("栈空,里面没有数据哦");

//            抛出异常
            throw new RuntimeException("栈空,没有数据");
        }
        int value=stack[top];
        top--;
        return value;
    }

    //遍历栈
    public void show(){
        if (isEmpty()){
            System.out.println("里面没有数据啦");
        }
        for (int x:stack) {
            System.out.println(x);
        }
    }
    //查询栈顶元素
    public  void showTop(){
        if(isEmpty()){
            System.out.println("无数据");
            return;
        }
        System.out.println(stack[0]);
    }


三、整体代码

package Second;

import java.util.Scanner;

/*
用数组模拟栈
栈是后进先出
 */
public class Stack828 {
    static  int N=10010;
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        arrayStack arraystack=new arrayStack(10);
        int M=scanner.nextInt();
        while(M-->0){
            String commend=scanner.next();
         switch (commend){
             case "push" :
                 int x=scanner.nextInt();
                 arraystack.push(x);
                 break;
             case "pop":
                 try {
                     arraystack.pop();
                 }
                 catch (Exception e) {
                     // TODO: handle exception
                     System.out.println(e.getMessage());
                 }
                 break;
             case "empty":
               arraystack.isEmpty();
               break;
             case "query":
                 arraystack.showTop();

         }

        }
    }


}
//用数组定义栈
class arrayStack{
    int size;//栈的大小
    int[] stack;// 数据放在数组中
    int top=-1;//栈顶,初始值为-1

    public arrayStack(int size) {
        this.size = size;
        stack=new int[this.size];
    }


    //判断栈满
    public boolean isFull(){
        return top==size-1;

    }

    //判断栈空
    public boolean isEmpty(){
        return top==-1;
    }

    //入栈
    public void push(int value){
        //永远都要先判断是否栈满
        if (isFull()){
            System.out.println("栈满,不能存数据哦");
            return;
        }
        top++;//相当于指针,指到哪里数据存到哪里
        stack[top]=value;
    }

    //出栈
    public int pop(){
        if (isEmpty()){
//            System.out.println("栈空,里面没有数据哦");

//            抛出异常
            throw new RuntimeException("栈空,没有数据");
        }
        int value=stack[top];
        top--;
        return value;
    }

    //遍历栈
    public void show(){
        if (isEmpty()){
            System.out.println("里面没有数据啦");
        }
        for (int x:stack) {
            System.out.println(x);
        }
    }
    //查询栈顶元素
    public  void showTop(){
        if(isEmpty()){
            System.out.println("无数据");
            return;
        }
        System.out.println(stack[top]);
    }
}

四、总结

弹出数据和加入数据都比直接写链表简单,抛出异常必不可少,如果不需要判断栈满,其实可以不用写栈的大小。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值