java中的栈(利用数组实现栈)

常见的数据结构:https://blog.csdn.net/weixin_43304253/article/details/119764275

栈的介绍

  • 1、栈的英文名(Stack)
  • 2、先入后出的有序列表
  • 3、限制元素的插入和删除只能在线性表的同一段进行的特殊线性表。允许插入和删除的一段称为栈顶(top),另外固定的一段为栈底(bottom)
  • 4、最先放入的元素在栈底,最后放入的元素在栈顶。最后放入的元素最先被删除,最先放入的最后被删除。

入栈操作,当有数据加入到栈时,top++;stack[top]=data;
出栈操作,int val=stack[top];top–;return val;

举例

设置top的初始值为-1。如果设置为整数或者0,则默认栈有大小。此处使用数组实现栈,数组中的索引0代表第一个元素,如果默认为0,则默认栈的大小为1(数组的长度为1)。栈的大小是在构造函数初始化动态设置大小。

package com.zheng.demo4;

public class MyStack {
public static void main(String[] args) {
Stack1 stack = new Stack1(6);
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
stack.push(5);
System.out.println("遍历栈:");
stack.list(); System.out.println("取出栈顶元素");
System.out.println(stack.pop());
}
} //定义栈
class Stack1 {
private int maxSize;//定义栈的大小
private int top = -1;//栈顶
private int[] stack; //构造器初始化一个栈
public Stack1(int maxSize) {
this.maxSize = maxSize;
stack = new int[this.maxSize]; } //判断栈是否满
public boolean isFull() {
return top == maxSize - 1;
} //p判断栈空
public boolean isEmpty() {
return top == -1;
} //入栈
public void push(int data) {
//先判断栈是否满
if (!isFull()) {
top++;
stack[top] = data; } else {
System.out.println("栈满");
}
} //出栈
public int pop() {
//先判断栈是否为空
if (isFull()) {
//抛出异常
throw new RuntimeException("栈空"); }
int val = stack[top];
top--; return val;
} //遍历栈
public void list() {
for (int i = top; i >= 0; i--) {
System.out.printf("stack[%d]=%d\n", i, stack[i]); }
} }

在这里插入图片描述

java中的栈(利用数组实现栈)的更多相关文章

  1. Java中的二维数组

    Java 中的二维数组 所谓二维数组,可以简单的理解为是一种"特殊"的一维数组,它的每个数组空间中保存的是一个一维数组. 那么如何使用二维数组呢,步骤如下: 1. 声明数组并分配空 ...

  2. JAVA中文件与Byte数组相互转换的方法

    JAVA中文件与Byte数组相互转换的方法,如下: public class FileUtil { //将文件转换成Byte数组 public static byte[] getBytesByFile ...

  3. Java中list如何利用遍历进行删除操作

    转: Java中list如何利用遍历进行删除操作 2018年03月31日 10:23:41 Little White_007 阅读数:3874   Java三种遍历如何进行list的便利删除: 1.f ...

  4. java中如何使用列表数组

    java中如何使用列表数组 觉得有用的话,欢迎一起讨论相互学习~Follow Me 转载链接 https://blog.csdn.net/hgtjcxy/article/details/8183519 ...

  5. java中的内存空间 堆和栈

        认识堆与栈 栈与堆都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆.Java的堆是一个运行时数据区,类的对象从中分配空间.这些对象通过 ...

  6. Eclipse中的快捷键快速生成常用代码(例如无参、带参构造,set、get方法),以及Java中重要的内存分析(栈、堆、方法区、常量池)

    (一)Eclipse中的快捷键:  ctrl+shift+f自动整理选择的java代码 alt+/ 生成无参构造器或者提升信息 alt+shift+s+o 生成带参构造 ctrl+shift+o快速导 ...

  7. Java 中的 JVM、堆和栈 -- 初步了解

    JVM -- Java Virtual Machine(Java虚拟机) —— 因为要说堆和栈,所以我们必须要先简单的说一下JVM.(JVM详细请找度娘啦~) 首先,我们都知道 java 一直宣传的口 ...

  8. Java中的字符串常量池,栈和堆的概念

    问题:String str = new String(“abc”),“abc”在内存中是怎么分配的?    答案是:堆内存.(Tips:jdk1.8 已经将字符串常量池放在堆内存区) 题目考查的为Ja ...

  9. 161101、在Java中如何高效判断数组中是否包含某个元素

    如何检查一个数组(无序)是否包含一个特定的值?这是一个在Java中经常用到的并且非常有用的操作.同时,这个问题在Stack Overflow中也是一个非常热门的问题.在投票比较高的几个答案中给出了几种 ...

随机推荐

  1. 华为分析&联运活动,助您提升游戏总体付费

    ARPU如何提升?付费率如何提升?活动ROI如何提升?这些都是游戏运营人员较常遇到的难题.华为分析与联运活动可以帮助运营提升这些用户付费指标,通过对玩家打标签和用户画像,对目标群体的进行精准推送,实现 ...

  2. 如何使用Solidity和Hardhat构建你自己的NFT以及NFT交易市场

    目录 目录 目录 1.ERC721的基础知识 1.1.什么是不可替代代币? 1.2.什么是 ERC-721? 1.3.什么是元数据 1.4.如何在链上保存NFT的图像 2.HardHat 3.创建项目 ...

  3. Python 汽车之家 全系车型参数(包含历史停售车型) 最全

    本文仅供学习交流使用,如侵立删!联系方式及demo下载见文末 汽车之家2021 全系车型参数(包含历史停售车型) 2021.10.21更新 增加参数:电动扰流板.无框设计车门.隐藏电动门把手.自动驾驶 ...

  4. ASP.NET Core依赖注入系统学习教程:关于服务注册使用到的方法

    在.NET Core的依赖注入框架中,服务注册的信息将会被封装成ServiceDescriptor对象,而这些对象都会存储在IServiceCollection接口类型表示的集合中,另外,IServi ...

  5. Python 工匠: 异常处理的三个好习惯

    前言 这是 "Python 工匠"系列的第 6 篇文章.(点击原文链接,可查看系列其他文章) 如果你用 Python 编程,那么你就无法避开异常,因为异常在这门语言里无处不在.打个 ...

  6. Java SE 9 新增特性

    Java SE 9 新增特性 作者:Grey 原文地址: Java SE 9 新增特性 源码 源仓库: Github:java_new_features 镜像仓库: GitCode:java_new_ ...

  7. Linux之搭建FTP服务

    引用:FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务. FTP是File Transfer Proto ...

  8. 使用 Mypy 检查 30 万行 Python 代码,总结出 3 大痛点与 6 个技巧!

    作者:Charlie Marsh 译者:豌豆花下猫@Python猫 英文:Using Mypy in production at Spring (https://notes.crmarsh.com/u ...

  9. centos7换清华源

    一 删除其他源 cd /etc/yum.repos.d/ 二 创建源 vim CentOS-Base.repo # CentOS-Base.repo # # The mirror system use ...

  10. maxHBLT的合并&初始化&时间复杂度分析

    1. 定义 [extened binary tree] 扩充二叉树是有 external node (用来代替空子树, 也就是 nullptr) 的 binary tree. 对应地, 其他 node ...