java实现栈功能

1.使用数组方式

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int operateNum = Integer.parseInt(br.readLine());//操作次数

        String inputInfo;//输入信息
        StringBuilder outputSb = new StringBuilder();//输出信息
        StackInner stackInner = new StackInner();
        stackInner.initCap(operateNum);
        for (int i = 0; i < operateNum; i++) {
            inputInfo = br.readLine();
            if ("top".equals(inputInfo)) {
                Integer topData = stackInner.top();
                if (topData == null) {
                    outputSb.append("error").append("\n");
                } else {
                    outputSb.append(topData).append("\n");
                }
            } else if ("pop".equals(inputInfo)) {
                Integer popData = stackInner.pop();
                if (popData == null) {
                    outputSb.append("error").append("\n");
                } else {
                    outputSb.append(popData).append("\n");
                }
            } else {
                stackInner.push(Integer.parseInt(inputInfo.split(" ")[1]));
            }
        }
        System.out.println(outputSb);
    }

    public static class StackInner {
        private int topIndex = 0;
        private Integer[] dataArray = null;

        public void initCap(int size) {
            dataArray = new Integer[size];
        }

        public void push(int data) {
            dataArray[topIndex] = data;
            topIndex++;
        }

        public Integer top() {
            if (topIndex > 0) {
                return dataArray[topIndex - 1];
            } else {
                return dataArray[topIndex];
            }
        }

        public Integer pop() {
            Integer topData = top();
            if (topData == null) {
                return null;
            }
            if (topIndex > 0) {
                dataArray[topIndex - 1] = null;
                topIndex--;
            } else {
                dataArray[topIndex] = null;
            }
            return topData;
        }
    }

2.使用链表方式

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int operateNum = Integer.parseInt(br.readLine());//操作次数

        String inputInfo;//输入信息
        StringBuilder outputSb = new StringBuilder();//输出信息
        StackInner stackInner = new StackInner();
        for (int i = 0; i < operateNum; i++) {
            inputInfo = br.readLine();
            if ("top".equals(inputInfo)) {//top
                int topData = stackInner.top();
                if (topData == Integer.MIN_VALUE) {
                    outputSb.append("error").append("\n");
                } else {
                    outputSb.append(topData).append("\n");
                }
            } else if ("pop".equals(inputInfo)) {//pop
                int popData = stackInner.pop();
                if (popData == Integer.MIN_VALUE) {
                    outputSb.append("error").append("\n");
                } else {
                    outputSb.append(popData).append("\n");
                }
            } else {//push
                String[] inputInfoArray = inputInfo.split(" ");
                stackInner.push(Integer.parseInt(inputInfoArray[1]));
            }
        }
        System.out.println(outputSb);
    }

    //节点,使用链实现栈功能
    private static class Node {
        public Node(int num) {
            this.data = num;
        }

        public int data;//数据
        public Node nextNode;//下一个节点
    }

    //内部栈
    public static class StackInner {
        private Node headNode;//头节点

        public void push(Integer num) {
            if (headNode == null) {
                headNode = new Node(num);
            } else {
                Node newHead = new Node(num);
                newHead.nextNode = headNode;
                headNode = newHead;
            }
        }

        public int top() {
            if (headNode == null) {
                return Integer.MIN_VALUE;
            } else {
                return headNode.data;
            }
        }

        public int pop() {
            if (headNode == null) {
                return Integer.MIN_VALUE;
            } else {
                int popNum = headNode.data;
                Node newHeadNode = headNode.nextNode;
                headNode.nextNode = null;
                headNode = newHeadNode;
                return popNum;
            }
        }
    }

        在牛客网上提交测试,最好运行时间在390ms左右

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

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

相关文章

湿度计算方法

湿度计算方法 &#xff08;1&#xff09;绝对湿度&#xff1a; 绝对湿度是指一定体积的空气中含有的水蒸气的质量&#xff0c;一般其单位是克/立方米。 其中的符号分别是&#xff1a; e–蒸汽压&#xff0c;单位是帕斯卡&#xff08;Pa) Rw–水的气体常数461.52J/&#xff…

1899_野火FreeRTOS教程阅读笔记_任务创建

1899_野火FreeRTOS教程阅读笔记_任务创建 全部学习汇总&#xff1a; g_FreeRTOS: FreeRTOS学习笔记 (gitee.com) 关于这部分&#xff0c;从一般前后台程序到RTOS的任务描述了很多。但是我觉得这本书的这部分描述没有描述到关键的信息点。其实&#xff0c;RTOS存在的一个主要的目…

UML 2.5图形库

UML 2.5图形库 drawio是一款强大的图表绘制软件&#xff0c;支持在线云端版本以及windows, macOS, linux安装版。 如果想在线直接使用&#xff0c;则直接输入网址drawon.cn或者使用drawon(桌案), drawon.cn内部完整的集成了drawio的所有功能&#xff0c;并实现了云端存储&#…

一文读懂:MybatisPlus从入门到进阶

快速入门 简介 在项目开发中&#xff0c;Mybatis已经为我们简化了代码编写。 但是我们仍需要编写很多单表CURD语句&#xff0c;MybatisPlus可以进一步简化Mybatis。 MybatisPlus官方文档&#xff1a;https://www.baomidou.com/&#xff0c;感谢苞米豆和黑马程序员。 Mybat…

Spring Boot的打包方式:JAR vs. WAR 打包方式

Spring Boot的打包方式&#xff1a;JAR vs. WAR 打包方式 Spring Boot是一个流行的Java开发框架&#xff0c;提供了快速、便捷的应用程序开发和部署方式。本文将介绍Spring Boot的两种常见打包方式&#xff1a;JAR和WAR。我们将深入探讨它们的特点、适用场景和部署方式&#xf…

使用命令修复windows 7/8引导,解决GHO映像恢复后不能进入系统的问题

背景&#xff1a; 最近使用ghost恢复windows7的GHO系统映像&#xff0c;重启后找不到引导系统。原因是没有激活系统分区。而之前安装在系统上的PE系统已经被删除。此时手里只有一个windows 10的启动u盘。可谓是绝望。 解决办法&#xff1a; 启动windows10系统u盘&#xff0c;点…

【python】绘制春节烟花

一、Pygame库春节烟花示例 下面是一个使用Pygame实现的简单春节烟花效果的示例代码。请注意&#xff0c;运行下面的代码之前&#xff0c;请确保计算机上已经安装了Pygame库。 import pygame import random import math from pygame.locals import *# 初始化pygame pygame.ini…

4.4 特效优化注意点

一、特效模型制作标准和注意事项 1.特效模型面数最大500&#xff08;面数可以加到1000&#xff0c;但是要分Lod等级&#xff09; &#xff08;模型对打面熟需要根据项目需求做好规范&#xff0c;例如Lod0 1000Tris&#xff0c; Lod1...Lod3 100Tris&#xff0c;最好以引擎内的三…

Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(八)

原文&#xff1a;Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第十八章&#xff1a;强化学习 强化学习&#xff08;RL&#xff09;是当今最激动人心的机器学习领域之一&#xff0c;也是最古老…

VMwawre配置静态ip

1、查看当前虚拟机网关&#xff08;记住这个网关&#xff0c;后面使用&#xff09; 2、进入目录命令&#xff1a;cd /etc/sysconfig/network-scripts/ 3、编辑网卡配置文件命令&#xff1a;vim ifcfg-ens33 4、配置静态IP&#xff0c;修改和增加如下信息&#xff1a; 修改的内…

编码技巧——在项目中使用Alibaba Cloud Toolkit远程部署

背景 在新公司项目开发&#xff0c;当前项目为自建项目&#xff0c;意思是从开发到运维都需要自己负责&#xff0c;远程的服务器也是自己搭建的win操作系统&#xff1b; 之前在大厂工作时&#xff0c;一般提交代码之后&#xff0c;CICD流水线会自动的执行最新代码的拉取、构建打…

神经网络 | 常见的激活函数

Hi&#xff0c;大家好&#xff0c;我是半亩花海。本文主要介绍神经网络中必要的激活函数的定义、分类、作用以及常见的激活函数的功能。 目录 一、激活函数定义 二、激活函数分类 三、常见的几种激活函数 1. Sigmoid 函数 &#xff08;1&#xff09;公式 &#xff08;2&a…

Linux笔记之expect和bash脚本监听输出并在匹配到指定字符串时发送中断信号

Linux笔记之expect和bash脚本监听输出并在匹配到指定字符串时发送中断信号 code review! 文章目录 Linux笔记之expect和bash脚本监听输出并在匹配到指定字符串时发送中断信号1.expect2.bash 1.expect 在Expect脚本中&#xff0c;你可以使用expect来监听程序输出&#xff0c;…

Redis——高级主题

介绍Redis的高级主题&#xff0c;包括服务器配置、Redis事务、Redis发布和订阅、Pipeline批量发送请求、数据备份与恢复等。 1、服务器配置 在Windows和Linux的Redis服务器里面&#xff0c;都有一个配置文件。Redis配置文件位于Redis安装目录下&#xff0c;在不同操作系统下&…

VMWare下载安装(包含Window是和Mac)

VMWare下载安装&#xff08;包含Window是和Mac&#xff09; 文章目录 VMWare下载安装&#xff08;包含Window是和Mac&#xff09;一、windows下载VMWare①&#xff1a;下载01&#xff1a;网盘下载02&#xff1a;官方下载 ②&#xff1a;安装③&#xff1a;密钥 二、Mac下载VMWa…

vue3:26—新的内置组件

目录 Teleport Suspense Teleport 什么是Teleport? Teleport 是一种能够将我们的组件html结构移动到指定位置的技术 当在元素中的css使用了filter滤镜属性的时候&#xff0c;会导致内部 fixed 元素定位发生错误&#xff0c;即不再相对 viewport 进行定位&#xff0c;而是相对…

使用 WMI 查询安全软件信息

在这篇文章中&#xff0c;我们将详细介绍如何使用 Windows Management Instrumentation (WMI) API 来查询当前计算机上安装的安全软件的基本信息。我们将分析代码的各个部分&#xff0c;并解释每个步骤所涉及的技术和原理。 一、什么是 WMI&#xff1f; WMI 是 Windows Manag…

BlueLotus 下载安装使用

说明 蓝莲花平台BlueLotus&#xff0c;是清华大学曾经的蓝莲花战队搭建的平台&#xff0c;该平台用于接收xss返回数据。 正常执行反射型xss和存储型xss&#xff1a; 反射型在执行poc时&#xff0c;会直接在页面弹出执行注入的poc代码&#xff1b;存储型则是在将poc代码注入用…

基于51 单片机的交通灯系统 源码+仿真+ppt

主要内容&#xff1a; 1&#xff09;南北方向的绿灯、东西方向的红灯同时亮40秒。 2&#xff09;南北方向的绿灯灭、黄灯亮5秒&#xff0c;同时东西方向的红灯继续亮。 3&#xff09;南北方向的黄灯灭、左转绿灯亮&#xff0c;持续20秒&#xff0c;同时东西方向的红灯继续…

Spinnaker多云持续交付平台: 部署Minio存储服务

目录 一、实验 1.环境 2.K8S storage节点部署NFS 3.K8S 动态创建PV 4.K8S master节点部署HELM3 4.K8S master节点部署Minio存储服务&#xff08;第一种方式安装&#xff09; 5.Minio客户端安装MC命令 6.K8S master节点使用Docker 部署Minio存储服务&#xff08;第二种方…