数据结构之栈(人、出、遍历,数组实现)

这是一个使用Java编写的数组栈实现,包括入栈、出栈、显示栈内容和判断栈满、栈空的功能。用户可以通过控制台输入进行交互操作,如显示栈、入栈、出栈或退出程序。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

package com.ws..;
//栈的思路分析:
//1.使用数组
//2.定义top,栈顶,初始化-1
//3.入栈:top++  stack[top]=data
//4.出栈:int value=stack[top]  top--  return value

import java.util.Scanner;

public class ArrayStackTest {
    public static void main(String[] args) {
        System.out.println("测试栈");
        ArrayStack arrayStack=new ArrayStack(4);
        String key="";
        boolean loop=true;//控制是否退出
        Scanner scanner=new Scanner(System.in);
        while (loop){
            System.out.println("a:显示栈");
            System.out.println("b:退出");
            System.out.println("c:入栈");
            System.out.println("d:出栈");
            System.out.println("------------------------请输入选择----------------------------");
            key=scanner.next();
            switch (key){
                case "a":
                    arrayStack.list();
                    break;
                case "c":
                    System.out.println("请输入一个数");
                    int value=scanner.nextInt();
                    arrayStack.add(value);
                    break;
                case "d":
                    try {
                        int re=arrayStack.pop();
                        System.out.printf("出栈的数据是%d\n",re);
                    }catch (Exception e){
                        System.out.println(e.getMessage());
                    }
                    break;
                case "b":
                    scanner.close();
                    loop=false;
                    break;
            }
        }
        System.out.println("程序退出");
    }
}

//栈
class ArrayStack{
    private int maxSize;//栈的大小
    private int[] stack;//数组,模拟栈
    private int top=-1;//栈顶,初始化-1

    //构造器
    public ArrayStack(int maxSize){
        this.maxSize=maxSize;
        stack=new int[this.maxSize];
    }

    //判断栈满
    public boolean ifMax(){
        return top==maxSize-1;//数组下标从0开始,-1
    }

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

    //入栈
    public void add(int value){
        //判断栈满
        if (ifMax()){
            System.out.println("栈满");
            return;
        }
        //入栈
        top++;
        stack[top]=value;
    }

    //出栈
    public int pop(){
        //判断栈是否为空
        if (ifFull()){
            //抛出异常
            throw new RuntimeException("栈空");
        }
        //出栈
        int value=stack[top];//先保存栈顶
        top--;//栈顶下移
        return value;
    }

    //遍历栈
    //栈顶开始显示数据
    public void list(){
        //判断栈空
        if (ifFull()){
            System.out.println("栈空");
            return;
        }
        //栈顶开始显示数据
        for (int i=top;i>=0;i--){
            System.out.printf("stack[%d]=%d\n",i,stack[i]);
        }
    }
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值