模拟实现 队列 - JAVA(使用链表,数组)

2023-11-19

以链表实现

以数组实现


 

以链表实现


class Node{
    public int val;
    public Node next;
    public  Node(int val){
        this.val=val;
    }
}


public class MyQueue {
    public Node front;
    public Node rear;

    //入队-》尾插法
    public void offer(int val){
        Node node=new Node(val);
        if(front==null){
            front=node;
            rear=node;
        }
        else{
            rear.next=node;
            rear=node;
        }
    }

    //返回队头元素
    public int peek(){
        if(isEmpty()) {
            throw new RuntimeException("队列为空!");
        }
        return front.val;
    }

    //出队
    public int poll() {
        if(isEmpty()) {
            throw new RuntimeException("队列为空!");
        }
        int tmp=front.val;
        front=front.next;
        return tmp;
    }

    //是否为空
    public boolean isEmpty(){
        return front==null;
    }

    public static void main(String[] args) {
        System.out.println();
    }
    
}

以数组实现

public class MyCircularQueue {
    public int[] elem;
    public int front;
    public  int rear;

    public MyCircularQueue(int k){
        this.elem=new int[k];
    }

    //是否为空
    public boolean isEmpty(){
        return this.front==rear;
    }

    //是否为满
    public boolean isFull() {
        if((rear+1)%elem.length==front){
            return true;
        }
        return false;
    }
    //入队操作
    public boolean enQueue(int value){
        if(isFull()){
            return false;
        }
        elem[rear]=value;
        rear=(rear+1)%elem.length;
        return true;
    }

    //出队操作
    public boolean deQueue(){
        if(isEmpty()) {
            return false;
        }
        front=(front+1)% elem.length;
        return true;
    }

    //获取队头元素
    public int Front(){
        if(isEmpty()) {
            return -1;
        }
        return elem[front];
    }

    //获取队尾元素
    public int Rear(){
        if(isEmpty()) {
            return -1;
        }
        if(rear==0){
            return elem[elem.length-1];
        }
        else{
            return elem[rear-1];
        }
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模拟实现 队列 - JAVA(使用链表,数组) 的相关文章

随机推荐

  • 复制对象时勿忘其每一个成分——条款12

    设计良好之面向对象系统 OO systems 会将对象的内部封装起来 只留两个函数负责对象拷贝 复制 那便是带着适切名称的copy构造函数和copy assignment操作符 我称它们为copying函数 条款5观察到编译器会在必要的时候
  • 杭州端点网络java开发实习生笔试题自我反省

    1 Spring Bean的默认范围是 A Prototype B Singleton C Abstract D Session 2 下列关于一个类的的静态成员的描述中 不正确的是 A 静态成员变量可被该类的所有方法访问 B 该类的静态方法
  • 二叉树的实现及其遍历(Python)

    树是一种基本的 非线性 数据结构 数据结构树分为 根 枝和叶三个部分 节点Node 是组成树的基本部分 每个节点具有名称或 键值 边Edge 边是组成树的另一个基本部分 根Root 树中唯一一个没有入边的节点 路径Path 由边依次连接在一
  • 2023年电赛E题详细讲解

    前言 E题是运动目标控制与自动追踪系统 其实就是一个红色激光追踪绿色激光 本文主要授人以渔 讲解思路 不含代码 建议自己编写 本文旨在和大家探讨一下更好的方案 欢迎讨论 读题 做题肯定是要读题的 本节主要是将一些主要的点 并反推出题人的出题
  • PLC控制电动机的顺序启动逆序停止

    一 PLC控制电动机延迟启动正转和反转 实验要求 当按下电动机的正转启动按钮时 电动机需要延迟30秒后 电动机才会正转启动工作 当按下反转按钮时 电动机需要延迟20秒后 电动机才会反转启动工作 当按下停止按钮时电动机立刻停止工作 PLC I
  • 浅谈系列之DevSecOps(一)目标及优点

    一 DevOps目标 说到DevSecOps就不得不提DevOps 后者的目标是提升整个研发效能 进行更便捷 更快捷 更可靠的交付 从而提高产品竞争优势 DevOps模糊了以往研发模式中开发 测速 运维等岗位和角色的界限 加强了他们之间的协
  • 如何通过Charles+BurpSuite的配合在PC端抓到手机包

    渗透测试工作记录 文章目录 渗透测试工作记录 前言 一 Charles是什么 二 实现步骤 以Mac端抓包IOS微信小程序为例 1 在Charles下设置代理的端口 2 分别在PC端和手机端安装证书 3 关闭macOS代理 打开外部代理 4
  • ESP32-CAM配置开发环境并烧录程序运行

    环境准备 ESP32 CAM开发板 烧录器 摄像头和一根USB线束连接电脑即可 Arduino下载完成后打开 不同版本的菜单栏可能稍微不同 仔细找即可 选择下面的选项 联网自动下载ESP32 CAM的 环境 端口和当前的一致即可 正常连接应
  • QT项目实战之翻金币小游戏

    目录 一 实现效果 二 实现过程 1 创建项目 添加项目资源 2 创建主场景 mainscene cpp h 3 自定义开始按钮 mypushbutton cpp h 4 创建选择关卡场景 chooselevelscene cpp h 5
  • js-年月日时分秒字符串切割,只显示年月日

    substring 方法用于提取字符串中介于两个指定下标之间的字符 var date 2020 01 01 00 00 00 date substring 0 10 console log date 2020 01 01
  • 怎么创建llvm的编译环境

    1 安装环境 首先 本人在下面操作使用的是ubuntu16的版本 具体如下图所示 2 安装环境参考网址 https source android com setup build initializing 3 下载llvm代码 官网下载9 0
  • Swift语法学习--字符&字符串

    Swift语法学习 字符 字符串
  • 疯壳AI语音及人脸识别3-4AI人脸系统架构

    详情地址 https fengke club GeekMart views offline ai 购买链接 https fengke club GeekMart su fKw7Nb7oC jsp 视频地址 https fengke club
  • sql修改一列或所有列的表类型和注释

    一列 ALTER TABLE cspg mp db mp device electric consumption statistics 1d MODIFY COLUMN electric double 20 2 NULL COMMENT 电
  • 链表面试题(一):反转链表的算法实现

    关于链表的考察 链表是面试里面经常涉及到的考点 因为链表的结构相比于Hashmap Hashtable Concurrenthashmap或者图等数据结构简单许多 对于后者更多面试的侧重点在于其底层实现 比如Hashmap中Entry
  • Python基础语法:数据分析利器

    欢迎来到我的博客 作者 秋无之地 简介 CSDN爬虫 后端 大数据领域创作者 目前从事python爬虫 后端和大数据等相关工作 主要擅长领域有 爬虫 后端 大数据开发 数据分析等 欢迎小伙伴们点赞 收藏 留言 上一篇文章已经跟大家介绍过 数
  • Jquery ligerui下拉框复选,使下拉框中相应值对勾选中

    othertypeCombox ligerGetComboBoxManager selectValue 1 2 3 4 othertypeCombox ligerGetComboBoxManager bulidContent 必须加上后一行
  • python创意实用案例-9个 Python 实用案例分享

    1 整理字符串输入 整理用户输入的问题在编程过程中极为常见 通常情况下 将字符转换为小写或大写就够了 有时你可以使用正则表达式模块 Regex 完成这项工作 但是如果问题很复杂 可能有更好的方法来解决 user input This str
  • 让你不得不学Python 的十大重要理由

    简单易学 Python是一种代表简单主义思想的语言 阅读一个良好的Python程序就感觉像是在读英语一样 它使你能够专注于解决问题而不是去搞明白语言本身 Python极其容易上手 因为Python有极其简单的说明文档 速度快 Python
  • 模拟实现 队列 - JAVA(使用链表,数组)

    以链表实现 以数组实现 以链表实现 class Node public int val public Node next public Node int val this val val public class MyQueue publi