算法学习(五)---队列
- package com.tw.dst.sq;
- /**
- * <p>队列是一种先进先出(FIFO)的线性数据结构,常用操作有插入(insert)和删除(remove)</p>
- * @author tangw 2010-11-27
- */
- public class Queue {
- // 队列数组
- private long queueArr[];
- //队列的前端下标
- private int front;
- //队列的尾端下标
- private int rear;
- //队列的大小
- private int maxSize;
- //队列中元素的个数
- private int nItems;
- //初始化一个大小为size的队列
- public Queue(int size){
- queueArr = new long[size];
- maxSize = size;
- front = 0;
- rear = -1;
- nItems = 0;
- }
- //插入操作
- public void insert(long value){
- //队列已满
- if(rear == maxSize-1)
- rear = -1;
- queueArr[++rear] = value;
- nItems++;
- }
- //删除操作
- public long remove(){
- long temp = queueArr[front++];
- if(front == maxSize)
- front = 0;
- nItems--;
- return temp;
- }
- //返回队列第一个元素
- public long peakFront(){
- return queueArr[front];
- }
- //判断是否为空
- public boolean isEmpty(){
- return nItems == 0;
- }
- //判断是否已满
- public boolean isFull(){
- return nItems == maxSize;
- }
- //返回队列中元素的个数
- public int size(){
- return nItems;
- }
- public void print(){
- for(int i = front;i < front+nItems;i++){
- System.out.print(queueArr[i]+" ");
- }
- System.out.println();
- }
- public static void main(String[] args) {
- Queue q = new Queue(10);
- while(!q.isFull()){
- long value = (long)(Math.random()*100);
- q.insert(value);
- }
- q.print();
- while(!q.isEmpty()){
- q.remove();
- q.print();
- }
- q.print();
- System.out.println(q.isEmpty());
- }
- }
转载于:https://blog.51cto.com/wen5566/435361
算法学习(五)---队列相关推荐
- 数据结构与算法学习笔记之先进先出的队列
前言 队列是一种非常实用的数据结构,类似于生活中发排队,可应用于生活,开发中各个方面,比如共享打印机(先请求先打印),消息队列.你想知道他们是怎么工作的么.那就来一起学习一下队列吧 正文 一.队列的定 ...
- AI火爆干货最全整理!五套深度学习和算法学习教程和三套Python学习视频!!!限时无套路免费领取!...
点击蓝色"AI专栏"关注我哟 选择"星标",重磅干货,第一时间送达 这是站长第 31 期免费送丰富宝贵的干货资源与教程 本期绝对是满满的干货! 获取更多资源请关 ...
- 算法学习-单调双端队列
文章目录 基础知识 算法模板 相关题目 239.滑动窗口最大值 1438.绝对差不超过限制的最长连续子数组 862.和至少为K的最短子数组 1425.带限制的子序列和 1499.满足不等式的最大值 2 ...
- 基于MVS的三维重建算法学习笔记(五)— 立体匹配经典算法PatchMatch论文翻译及要点解读
基于MVS的三维重建算法学习笔记(五)- 立体匹配经典算法PatchMatch论文翻译及要点解读 声明 问题提出 问题建模 通过PatchMatch获取平面参数--Inference via Patc ...
- 算法学习 (门徒计划)4-1 单调队列及经典问题及经典例题 学习笔记
算法学习 (门徒计划)4-1 单调队列及经典问题及经典例题 学习笔记 前言 单调队列 场景举例(RMQ) 应用-维护区间最值的方式 数据结构-自行设计单调队列 代码实现(java) 例题分析(略) 总 ...
- 算法学习12: 单调队列和单调栈
算法学习12: 单调队列和单调栈 单调队列 单调队列解决的问题: 窗口内最大/最小值的更新结构 单调队列的结构和操作 单调队列的应用 题目一: 生成窗口最大值数组[leetcode 239](http ...
- 【数据结构与算法】程序内功篇五--队列
程序内功篇五--队列 一.队列 1.队列原理 2.队列演示 二.顺序队列 >1.顺序队列原理 >2.顺序队列的创建 >3.顺序队列的入队 >4.顺序队列的出队 >5.顺序 ...
- 原创 | 初学者友好!最全算法学习资源汇总(附链接)
在计算机发展飞速的今天,也许有人会问,"今天计算机这么快,算法还重要吗?"其实永远不会有太快的计算机,因为我们总会想出新的应用.虽然在摩尔定律的作用下,计算机的计算能力每年都在飞快 ...
- 算法学习 (门徒计划)3-2 哈希表与布隆过滤器及经典问题 学习笔记
算法学习 (门徒计划)3-2 哈希表与布隆过滤器及经典问题 学习笔记 前言 哈希表 哈希操作 冲突处理 开放定址法 再哈希法 公共溢出区 链式地址法 扩容哈希表 设计简易哈希表 总结 布隆过滤器 对比 ...
最新文章
- Golang gRPC实践 连载六 内置Trace
- 《GitHub入门与实践》
- 使用yum来下载RPM包而不进行安装
- python免费学校_清华大学,的python学习路线,免费分享给小白福利
- 如何高效率学Web前端 怎么规划前端学习路线
- 微分方程之————微分方程的基本概念
- 调用Kubernetes SDK实现二次开发
- hadoop yarn如何启动聚合日志
- select模型(一 改进客户端)
- [环境搭建]Windows下安装Ruby和Jekyll
- c语言程序设计安卓,C语言编程学习app下载-C语言编程学习 安卓版v2.1.2-PC6安卓网...
- AMH主机面板实现伪静态规则教程
- 【jQwidgets】简单封装示例
- 养老保险和住房公积金如何转移
- Wannacrypt蠕虫老树开花?又见Wannacrypt
- 如何将图片变成GIF图?一键完成gif制作
- Word里一级标题里页眉很近
- nmap命令小结(一)
- Android中收货地址管理Demo
- 哪个版本的outlook好_未来版本的Outlook的阴影?
热门文章
- 写给大忙人的ELK最新版6.2.4学习笔记-Logstash和Filebeat解析(java异常堆栈下多行日志配置支持)...
- 怎样在linux上部署web服务器
- dex:来自CoreOS的开源身份认证服务解决方案
- bzoj3791作业*
- 升级将至,BCH各开发组已推出兼容新版本
- 在Angular4中使用ng2-baidu-map详解
- Mac的brew和brew cask区别以及安装brew cask
- 线性模型和非线性模型的区别
- .Net使用SignalR实现消息推送功能预研及Demo
- 【备忘】linux shell 字符串操作(长度,查找,替换,匹配)详解