Java实现一个栈

目录

概念与结构 

实现一个栈 

创建一个栈类

实现栈的基本操作

 测试栈类


概念与结构 

概念与结构
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。
压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶
出栈:栈的删除操作叫做出栈。出数据也在栈顶

实现一个栈 

创建一个栈类

public class MyStack {
    private int maxSize;
    private int top;
    private int[] stackArray;

    public MyStack(int size) {
        maxSize = size;
        stackArray = new int[maxSize];
        top = -1;
    }
}

实现栈的基本操作

包括入栈(push)、出栈(pop)和查看栈顶元素(peek)。

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

    // 判断栈是否已满
    public boolean isFull() {
        return top == maxSize - 1;
    }

    // 入栈
    public void push(int value) {
        if(!isFull()){
            top++;
            stackArray[top] = value;
        }else {
            System.out.println("栈已满,无法添加新元素");
        }
    }

    // 出栈
    public int pop(){
        if(isEmpty()){
            return stackArray[top--];
        }else{
            System.out.println("栈为空,无法弹出元素");
            return -1;
        }
    }

    // 栈顶
    public int peek(){
        if(!isEmpty()){
            return stackArray[top];
        }else {
            System.out.println("栈为空,无法弹出元素");
            return -1;
        }
    }

 测试栈类

public class Main {
    public static void main(String[] args) {
        MyStack stack = new MyStack(5);

        stack.push(1);
        stack.push(2);
        stack.push(3);
        stack.push(4);
        stack.push(5);

        System.out.println("栈顶元素:" + stack.peek()); // 输出:栈顶元素:5

        System.out.println("出栈元素:" + stack.pop()); // 输出:出栈元素:5
        System.out.println("出栈元素:" + stack.pop()); // 输出:出栈元素:4

        System.out.println("栈顶元素:" + stack.peek()); // 输出:栈顶元素:3
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/395204.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法练习-分割等和子集(思路+流程图+代码)

难度参考 难度:困难 分类:动态规划 难度与分类由我所参与的培训课程提供,但需 要注意的是,难度与分类仅供参考。且所在课程未提供测试平台,故实现代码主要为自行测试的那种,以下内容均为个人笔记&#xff0…

[AIGC] 深入理解 Java 虚拟机(JVM)的垃圾回收

深入理解 Java 虚拟机(JVM)的垃圾回收 一、是什么 Java 虚拟机(JVM)的垃圾回收(Garbage Collection)是一种自动内存管理机制,用于释放不再使用的对象所占用的内存空间。垃圾回收的目标是回收那…

【HTML】SVG实现炫酷的描边动画

前沿 今天闲来无事,看到Antfu大佬的个性签名,觉得还是非常炫酷的,于是也想要搞一个自己的个性签名用来装饰自己的门面,不过由于手写的签名太丑了,遂放弃。于是尝试理解原理,深入研究此等密法,终…

如何录制视频?让你的录制过程更加顺畅!

录制视频是现代社会不可或缺的技能之一,无论是工作还是生活,我们都需要学会如何录制和编辑视频,可是您知道如何录制视频吗?本文将介绍两种录制视频的方法,这两种方法各有特点,可以满足不同用户的需求。 如何…

Windows制作Ubuntu的U盘启动盘

概要: 本篇演示在Windows10中制作Ubuntu22.04的U盘启动盘 一、下载Ubuntu22.04的iso文件 在浏览器中输入https://ubuntu.com去Ubuntu官网下载Ubuntu22.04的iso文件 二、下载Ultraiso 在浏览器中输入https://www.ultraiso.com进入ultraiso官网 点击FREE TRIAL&a…

腾讯云4核8G12M服务器支持多少人在线?

4核8G服务器支持多少人同时在线访问?阿腾云的4核8G服务器可以支持20个访客同时访问,关于4核8G服务器承载量并发数qps计算测评,云服务器上运行程序效率不同支持人数在线人数不同,公网带宽也是影响4核8G服务器并发数的一大因素&…

最高频率的图形工作站应用配置推荐

如果你的计算机速度太慢,想买一台最快的图形工作站,大幅提高你的工作效率,从专业角度,这种图形工作站不是唯一的,原因是,不同的应用、不同的算法、不同计算规模,硬件配置有很大差异,…

书生开源大模型-第2讲-笔记

1.环境准备 1.1环境 先克隆我们的环境 bash /root/share/install_conda_env_internlm_base.sh internlm-demo1.2 模型参数 下载或者复制下来,开发机中已经有一份参数了 mkdir -p /root/model/Shanghai_AI_Laboratory cp -r /root/share/temp/model_repos/inter…

大数据信用风险检测,多久查一次比较好?

自从大数据技术的出现,就被广泛的运用到金融风控行业,逐渐成为不少银行和机构进行贷前风险排查的重要工具,大数据信用的重要性也日益的显现出来,那大数据信用风险检测,多久查一次比较好呢?本文为你详细讲讲。 大数据信…

[AudioRecorder]iPhone苹果通话录音汉化破解版-使用巨魔安装-ios17绕道目前还不支持

首先你必须有巨魔才能使用!! 不会安装的,还没安装的移步这里,ios17 以上目前装不了,别看了:永久签名 | 网址分类目录 | 路灯iOS导航-苹果签名实用知识网址导航-各种iOS技巧-后厂村路灯 视频教程 【Audio…

森林消防利器:智能高压森林应急消防泵

在森林火灾防控工作中,智能高压森林应急消防泵发挥着至关重要的作用。它是一种由高强度耐腐蚀材料加工制造而成的消防泵,具有体积小、重量轻、压力大、扬程高、流量大、输水距离远等优点,运行可靠,能够迅速扑灭森林火灾&#xff0…

SG-9101CB(可编程+105℃晶体振荡器)

SG-9101CB 系列是一款高精度可编程性的晶体振荡器,能够在0.67 MHz至170 MHz的频率范围内以1ppm的步长精确调整频率。这款振荡器支持宽范围的电源电压(1.62 V至3.63V),并提供使能(OE)或待机(ST&a…

Java学习第十七节之封装

封装 package oop.demo04;//类 private:私有 public class Student {//属性私有private String name;//名字private int id;//学号private char sex;//性别private int age;//年龄//提供一些可以操作这个属性的方法!//提供一些 public 的 get,set 方法…

如何使用Net2FTP部署本地Web网站并实现远程文件共享

文章目录 1.前言2. Net2FTP网站搭建2.1. Net2FTP下载和安装2.2. Net2FTP网页测试 3. cpolar内网穿透3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 文件传输可以说是互联网最主要的应用之一,特别是智能设备的大面积使用,无论是个人…

做temu跨境电商,必读这五大秘诀!

随着互联网的飞速发展,电商行业呈现出前所未有的繁荣景象。新兴电商平台Temu成为了众多创业者的关注焦点。本文将为您解析如何在Temu电商蓝海项目中,从自身能力建设、了解市场环境到做好定位等方面,找到属于您的成功之路。 一、自身能力建设 …

【QCA6174】SDX12+QCA6174驱动屏蔽120/124/128信道修改方案

SDX12基线版本 SDX12.LE.1.0-00215-NBOOT.NEFS.PROD-1.39743.1 问题描述 对于欧洲国家来说,默认支持DFS信道,但是有三个信道比较特殊,是天气雷达信道,如下图所示120、124、128,天气雷达信道有个特点就是在信号可以发射之前需要检测静默15min,如果信道自动选择到了天气雷达…

原创!顶级SCI优化!一键实现ICEEMDAN-NRBO-BiLSTM-Attention多变量时间序列预测!以光伏数据集为例

声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~ 目录 数据介绍 模型流程 创新点 结果展示 完整…

C++ STL详解:set

目录 一、简介 1.1键值对 1.2树形结构的关联式容器 二、set 2.1set简介 2.2set内部常用接口 2.1set的构造函数 2.2set迭代器 2.3判空及增删查改 三、使用例子 一、简介 在前几篇文章中&#xff0c;已经学习了二叉搜索树&#xff0c;二map和set的底层就是<key, va…

数据采集三防平板丨三防平板电脑丨停车场应用

随着现代科技的不断发展&#xff0c;三防平板已经成为许多人工作和生活的必备工具。在停车场这个场景中&#xff0c;三防平板的应用可以大大提高停车场管理的效率和安全性。 停车场是现代城市交通管理的重要组成部分&#xff0c;它直接关系到城市交通的流畅和公共安全。停车场…

国图公考:为什么考编?应届生考编有优势吗?

当下公务员和事业编成为大部分人的选择&#xff0c;事业编考试和公务员考试对比有哪些优势?为什么考编? 1.竞争激烈程度 虽然每年报考事业编的人有很多&#xff0c;但是和公务员相比起来竞争并没有那么激烈。 2.考试难度 事业编和公务员在考试内容上有一定的差异&#xf…