自定义queue - linked array
为什么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相关推荐
- js中数组原型Array、自定义原型函数Array.prototype
全栈工程师开发手册 (作者:栾鹏) js系列教程1-数组操作全解 js中数组原型.自定义原型函数 每个数组都包含length.prototype.constructor属性. 通过在prototype ...
- 【C++ STL学习笔记】C++ STL序列式容器(array,vector,deque,list)
文章目录 C++ STL容器是什么? 迭代器是什么,C++ STL迭代器(iterator)用法详解 迭代器类别 迭代器的定义方式 C++序列式容器(STL序列式容器)是什么 容器中常见的函数成员 C ...
- php memcache 封装类,PHP 自定义session储存 MEMCACHE 方式类
自定义session储存 MEMCACHE 方式类 在php.ini配置文件中更改设置 (Registered_save_handlers 有三种方式 files user memcache) ses ...
- PHP 自定义session储存 数据库 方式类 高洛峰 细说PHP
自定义session储存 数据库 方式类 在php.ini配置文件中更改设置 (Registered_save_handlers 有三种方式 files user memcache) session. ...
- Queue(队列 C++模版实现)
Queue(队列 C++模版实现) #ifndef C11LEARN_QUEUE_H #define C11LEARN_QUEUE_H template<typename T> class ...
- 让你的WordPress主题支持自定义菜单
WordPress 3+以后的版本已经支持自定义菜单功能,如果你的主题还不能支持这个功能话,我敢说你的主题Out啦,是不是想再In进来?那就认真继续阅读,让你的WordPress主题支持自定义菜单功能 ...
- c#queue_带有C#示例的Queue.CopyTo()方法
c#queue C#Queue.CopyTo()方法 (C# Queue.CopyTo() method) Queue.CopyTo() method is used to copy the Queu ...
- Celery多个定时任务使用RabbitMQ,Queue冲突解决
Celery多个定时任务使用RabbitMQ,Queue冲突解决 一. 场景描述 使用celery实现定时任务后,任务会被定时添加到后端指定的队列里,队列可以是RabbitMQ,也可以是redis. ...
- ThinkPHP框架配置自定义的模板变量(十)
原文:ThinkPHP框架配置自定义的模板变量(十) 模板替换(手册有详细介绍对应的目录) __PUBLIC__:会被替换成当前网站的公共目录 通常是 /Public/ __ROOT__: 会替换成当 ...
最新文章
- 浅谈在ASP.NET中数据有效性校验的方法
- 「SAP技术」SAP MM 事务代码ME17的用法
- Autofac 解释第一个例子 《第一篇》
- 创建CSS和处理的一些方法
- Windows内核实验003 再次回到中断
- 建议收藏!一文走遍机器学习的6个主流模型
- python模块之re正则表达式
- linux下配置myBase7.ini
- 关于浏览器跨域请求的相关原理实现--很经典的博客
- 本人对于netty框架的一些理解,怎么与网站上的websock建立连接
- mpu 配置内存空间_mpu内存保护单元功能及工作原理
- 当科学家们使用计算机来试图,当科学家们使用计算机来试图预测复杂的--易哈佛考试题库...
- 如何在软件发布计划中自动化语义化版本与变更日志
- Windows如何重装系统
- 分布式系统概念与设计——阅读笔记(一)
- 华硕xhci灰色_[安装实录] 零基础完美黑苹果安装之华硕篇
- 斐波那契堆 - 解析与实现
- itext实现PDF模板套打java,生成电子合同电子收据电子发票
- F5 LTM fullnat模式测试记录及配置
- 深度学习项目部署遇到的错误【记录】
热门文章
- DataList和Repeater分页
- Java的新项目学成在线笔记-day13(八)
- 题解 P2610 【[ZJOI2012]旅游】
- Java学习笔记——面向对象 1
- C++学习日记1:VS2015环境下,创建基于对话框的MFC工程
- 电子表格控件Aspose.Cells V17.4.0发布 | 新增重要功能
- vsftpd虚拟用户整理
- 危机十足站长的生命觉悟:拼命也得每天挤一滴墨水!
- Java 运行程序,并获得结果
- 我的Python成长之路---第三天---Python基础(9)---2016年1月16日(雾霾)