为什么80%的码农都做不了架构师?>>>   


public class SimpleLinkedQueue {class Node{public String v;public Node next;public Node(String v){this.v = v;}}Node init = new Node(null);Node head = init;Node tail = init;public void put(String v){Node node = new Node(v);tail.next = node;tail = node;}public String take(){
// 第一次实现,head 只是一个空的节点,不包含数据,head的next才是第一个数据节点 ,下面四行实现没考虑到
//      String v = head.v;
//      Node tempHead = head.next;
//      head = tempHead;
//      return v;/*** 第二次实现* 1. 取出第一个数据节点 * 2. 把head节点指针指向第一个数据节点, 并切断老的head 和 first的联系 , head ->/ first -> second ->...*  */Node oldHead = head;Node first = head.next;  //第一个数据节点String v = first.v;head = first;head.v = null;oldHead.next = null;return v;}public void readFromHead(){System.out.println("head is :" + head.v);Node n = head.next;while(n != null){System.out.println(n.v);n = n.next;}}public static void main(String args[]){SimpleLinkedQueue q = new SimpleLinkedQueue();for (int i = 0; i < 10; i++) {q.put("data-"+i);}System.out.println("take 1 : " + q.take());System.out.println("take 2 : " + q.take());q.readFromHead();}
}

// 未考虑线程安全,只做练习队列的写法
public class SimpleArrayQueue {public SimpleArrayQueue(){this(Integer.MAX_VALUE);}public SimpleArrayQueue(int length){list = new String[length];}private String[] list = null;  //队列private int take;  //take游标private int put;  //put游标private int count; //队列内元素数public void put(String e){if(count == list.length){System.out.println("队列满了,该清理了..,数据 " + e + " 被丢弃" );return;}list[put] = e;put++;count++;if(put == list.length)put = 0;}public String take(){if(count == 0){System.out.println("队列空了,还取个毛啊..");return null;}String e = list[take];list[take] = null;take++;count--;if(take == list.length)take = 0;return e;}public void read(){for(int i=0;i<list.length;i++){if(list[i] == null)continue;System.out.println("read : "+ i + " : " + list[i]);}}public static void main(String args[]){SimpleArrayQueue s = new SimpleArrayQueue(10);for(int i=0; i<8;i++){s.put("数"+i);}System.out.println("take 1 " + s.take());System.out.println("take 2 " + s.take());s.read();s.put("数***");s.put("数***1");System.out.println("take 3 " + s.take());s.put("数***2");s.read();}
}

转载于:https://my.oschina.net/bihu/blog/790425

自定义queue - linked array相关推荐

  1. js中数组原型Array、自定义原型函数Array.prototype

    全栈工程师开发手册 (作者:栾鹏) js系列教程1-数组操作全解 js中数组原型.自定义原型函数 每个数组都包含length.prototype.constructor属性. 通过在prototype ...

  2. 【C++ STL学习笔记】C++ STL序列式容器(array,vector,deque,list)

    文章目录 C++ STL容器是什么? 迭代器是什么,C++ STL迭代器(iterator)用法详解 迭代器类别 迭代器的定义方式 C++序列式容器(STL序列式容器)是什么 容器中常见的函数成员 C ...

  3. php memcache 封装类,PHP 自定义session储存 MEMCACHE 方式类

    自定义session储存 MEMCACHE 方式类 在php.ini配置文件中更改设置 (Registered_save_handlers 有三种方式 files user memcache) ses ...

  4. PHP 自定义session储存 数据库 方式类   高洛峰 细说PHP

    自定义session储存 数据库 方式类 在php.ini配置文件中更改设置 (Registered_save_handlers 有三种方式 files user memcache) session. ...

  5. Queue(队列 C++模版实现)

    Queue(队列 C++模版实现) #ifndef C11LEARN_QUEUE_H #define C11LEARN_QUEUE_H template<typename T> class ...

  6. 让你的WordPress主题支持自定义菜单

    WordPress 3+以后的版本已经支持自定义菜单功能,如果你的主题还不能支持这个功能话,我敢说你的主题Out啦,是不是想再In进来?那就认真继续阅读,让你的WordPress主题支持自定义菜单功能 ...

  7. c#queue_带有C#示例的Queue.CopyTo()方法

    c#queue C#Queue.CopyTo()方法 (C# Queue.CopyTo() method) Queue.CopyTo() method is used to copy the Queu ...

  8. Celery多个定时任务使用RabbitMQ,Queue冲突解决

    Celery多个定时任务使用RabbitMQ,Queue冲突解决 一. 场景描述 使用celery实现定时任务后,任务会被定时添加到后端指定的队列里,队列可以是RabbitMQ,也可以是redis. ...

  9. ThinkPHP框架配置自定义的模板变量(十)

    原文:ThinkPHP框架配置自定义的模板变量(十) 模板替换(手册有详细介绍对应的目录) __PUBLIC__:会被替换成当前网站的公共目录 通常是 /Public/ __ROOT__: 会替换成当 ...

最新文章

  1. 浅谈在ASP.NET中数据有效性校验的方法
  2. 「SAP技术」SAP MM 事务代码ME17的用法
  3. Autofac 解释第一个例子 《第一篇》
  4. 创建CSS和处理的一些方法
  5. Windows内核实验003 再次回到中断
  6. 建议收藏!一文走遍机器学习的6个主流模型
  7. python模块之re正则表达式
  8. linux下配置myBase7.ini
  9. 关于浏览器跨域请求的相关原理实现--很经典的博客
  10. 本人对于netty框架的一些理解,怎么与网站上的websock建立连接
  11. mpu 配置内存空间_mpu内存保护单元功能及工作原理
  12. 当科学家们使用计算机来试图,当科学家们使用计算机来试图预测复杂的--易哈佛考试题库...
  13. 如何在软件发布计划中自动化语义化版本与变更日志
  14. Windows如何重装系统
  15. 分布式系统概念与设计——阅读笔记(一)
  16. 华硕xhci灰色_[安装实录] 零基础完美黑苹果安装之华硕篇
  17. 斐波那契堆 - 解析与实现
  18. itext实现PDF模板套打java,生成电子合同电子收据电子发票
  19. F5 LTM fullnat模式测试记录及配置
  20. 深度学习项目部署遇到的错误【记录】

热门文章

  1. DataList和Repeater分页
  2. Java的新项目学成在线笔记-day13(八)
  3. 题解 P2610 【[ZJOI2012]旅游】
  4. Java学习笔记——面向对象 1
  5. C++学习日记1:VS2015环境下,创建基于对话框的MFC工程
  6. 电子表格控件Aspose.Cells V17.4.0发布 | 新增重要功能
  7. vsftpd虚拟用户整理
  8. 危机十足站长的生命觉悟:拼命也得每天挤一滴墨水!
  9. Java 运行程序,并获得结果
  10. 我的Python成长之路---第三天---Python基础(9)---2016年1月16日(雾霾)