1. package com.tw.dst.sq;
  2. /**
  3. * <p>队列是一种先进先出(FIFO)的线性数据结构,常用操作有插入(insert)和删除(remove)</p>
  4. * @author tangw 2010-11-27
  5. */
  6. public class Queue {
  7. //  队列数组
  8. private long queueArr[];
  9. //队列的前端下标
  10. private int front;
  11. //队列的尾端下标
  12. private int rear;
  13. //队列的大小
  14. private int maxSize;
  15. //队列中元素的个数
  16. private int nItems;
  17. //初始化一个大小为size的队列
  18. public Queue(int size){
  19. queueArr = new long[size];
  20. maxSize = size;
  21. front = 0;
  22. rear = -1;
  23. nItems = 0;
  24. }
  25. //插入操作
  26. public void insert(long value){
  27. //队列已满
  28. if(rear == maxSize-1)
  29. rear = -1;
  30. queueArr[++rear] = value;
  31. nItems++;
  32. }
  33. //删除操作
  34. public long remove(){
  35. long temp = queueArr[front++];
  36. if(front == maxSize)
  37. front = 0;
  38. nItems--;
  39. return temp;
  40. }
  41. //返回队列第一个元素
  42. public long peakFront(){
  43. return queueArr[front];
  44. }
  45. //判断是否为空
  46. public boolean isEmpty(){
  47. return nItems == 0;
  48. }
  49. //判断是否已满
  50. public boolean isFull(){
  51. return nItems == maxSize;
  52. }
  53. //返回队列中元素的个数
  54. public int size(){
  55. return nItems;
  56. }
  57. public void print(){
  58. for(int i = front;i < front+nItems;i++){
  59. System.out.print(queueArr[i]+" ");
  60. }
  61. System.out.println();
  62. }
  63. public static void main(String[] args) {
  64. Queue q = new Queue(10);
  65. while(!q.isFull()){
  66. long value = (long)(Math.random()*100);
  67. q.insert(value);
  68. }
  69. q.print();
  70. while(!q.isEmpty()){
  71. q.remove();
  72. q.print();
  73. }
  74. q.print();
  75. System.out.println(q.isEmpty());
  76. }
  77. }

转载于:https://blog.51cto.com/wen5566/435361

算法学习(五)---队列相关推荐

  1. 数据结构与算法学习笔记之先进先出的队列

    前言 队列是一种非常实用的数据结构,类似于生活中发排队,可应用于生活,开发中各个方面,比如共享打印机(先请求先打印),消息队列.你想知道他们是怎么工作的么.那就来一起学习一下队列吧 正文 一.队列的定 ...

  2. AI火爆干货最全整理!五套深度学习和算法学习教程和三套Python学习视频!!!限时无套路免费领取!...

    点击蓝色"AI专栏"关注我哟 选择"星标",重磅干货,第一时间送达 这是站长第 31 期免费送丰富宝贵的干货资源与教程 本期绝对是满满的干货! 获取更多资源请关 ...

  3. 算法学习-单调双端队列

    文章目录 基础知识 算法模板 相关题目 239.滑动窗口最大值 1438.绝对差不超过限制的最长连续子数组 862.和至少为K的最短子数组 1425.带限制的子序列和 1499.满足不等式的最大值 2 ...

  4. 基于MVS的三维重建算法学习笔记(五)— 立体匹配经典算法PatchMatch论文翻译及要点解读

    基于MVS的三维重建算法学习笔记(五)- 立体匹配经典算法PatchMatch论文翻译及要点解读 声明 问题提出 问题建模 通过PatchMatch获取平面参数--Inference via Patc ...

  5. 算法学习 (门徒计划)4-1 单调队列及经典问题及经典例题 学习笔记

    算法学习 (门徒计划)4-1 单调队列及经典问题及经典例题 学习笔记 前言 单调队列 场景举例(RMQ) 应用-维护区间最值的方式 数据结构-自行设计单调队列 代码实现(java) 例题分析(略) 总 ...

  6. 算法学习12: 单调队列和单调栈

    算法学习12: 单调队列和单调栈 单调队列 单调队列解决的问题: 窗口内最大/最小值的更新结构 单调队列的结构和操作 单调队列的应用 题目一: 生成窗口最大值数组[leetcode 239](http ...

  7. 【数据结构与算法】程序内功篇五--队列

    程序内功篇五--队列 一.队列 1.队列原理 2.队列演示 二.顺序队列 >1.顺序队列原理 >2.顺序队列的创建 >3.顺序队列的入队 >4.顺序队列的出队 >5.顺序 ...

  8. 原创 | 初学者友好!最全算法学习资源汇总(附链接)

    在计算机发展飞速的今天,也许有人会问,"今天计算机这么快,算法还重要吗?"其实永远不会有太快的计算机,因为我们总会想出新的应用.虽然在摩尔定律的作用下,计算机的计算能力每年都在飞快 ...

  9. 算法学习 (门徒计划)3-2 哈希表与布隆过滤器及经典问题 学习笔记

    算法学习 (门徒计划)3-2 哈希表与布隆过滤器及经典问题 学习笔记 前言 哈希表 哈希操作 冲突处理 开放定址法 再哈希法 公共溢出区 链式地址法 扩容哈希表 设计简易哈希表 总结 布隆过滤器 对比 ...

最新文章

  1. Golang gRPC实践 连载六 内置Trace
  2. 《GitHub入门与实践》
  3. 使用yum来下载RPM包而不进行安装
  4. python免费学校_清华大学,的python学习路线,免费分享给小白福利
  5. 如何高效率学Web前端 怎么规划前端学习路线
  6. 微分方程之————微分方程的基本概念
  7. 调用Kubernetes SDK实现二次开发
  8. hadoop yarn如何启动聚合日志
  9. select模型(一 改进客户端)
  10. [环境搭建]Windows下安装Ruby和Jekyll
  11. c语言程序设计安卓,C语言编程学习app下载-C语言编程学习 安卓版v2.1.2-PC6安卓网...
  12. AMH主机面板实现伪静态规则教程
  13. 【jQwidgets】简单封装示例
  14. 养老保险和住房公积金如何转移
  15. Wannacrypt蠕虫老树开花?又见Wannacrypt
  16. 如何将图片变成GIF图?一键完成gif制作
  17. Word里一级标题里页眉很近
  18. nmap命令小结(一)
  19. Android中收货地址管理Demo
  20. 哪个版本的outlook好_未来版本的Outlook的阴影?

热门文章

  1. 写给大忙人的ELK最新版6.2.4学习笔记-Logstash和Filebeat解析(java异常堆栈下多行日志配置支持)...
  2. 怎样在linux上部署web服务器
  3. dex:来自CoreOS的开源身份认证服务解决方案
  4. bzoj3791作业*
  5. 升级将至,BCH各开发组已推出兼容新版本
  6. 在Angular4中使用ng2-baidu-map详解
  7. Mac的brew和brew cask区别以及安装brew cask
  8. 线性模型和非线性模型的区别
  9. .Net使用SignalR实现消息推送功能预研及Demo
  10. 【备忘】linux shell 字符串操作(长度,查找,替换,匹配)详解