Java关于队列的自我实现
1.循环队列的封装
- package com.pinjia.shop.common.collection;
- /**
- * Created by wangwei on 2016/12/29.
- * 循环队列的自我封装
- */
- public class Myqueue<E> {
- E[] a;//数组对象
- private static final int DEFAULT_SIZE = 10;//默认队列初始化大小
- int front;
- int rear;
- public Myqueue(){
- this(DEFAULT_SIZE);
- }
- public Myqueue(int size){
- a = (E[])new Object[size];
- front = 0;
- rear = 0;
- }
- public boolean inQueue(E obj){
- if((rear+1)%a.length==front){ //队满
- return false;
- }else{
- a[rear] = obj;
- rear = (rear+1)%a.length;
- return true;
- }
- }
- public E outQueue(){
- if(front == rear){
- return null;
- }else{
- E obj = a[front];
- front = (front+1)%a.length;
- return obj;
- }
- }
- public int length(){
- if(rear>front)
- return rear-front+1;
- else
- return a.length;
- }
- public boolean isEmpty(){
- return rear == front;
- }
- public String toString(){
- StringBuilder sb = new StringBuilder();
- for(int i=0;i<a.length;i++){
- sb.append(outQueue()+""+",");
- }
- return sb.toString().substring(0,sb.toString().lastIndexOf(","));
- }
- public static void main(String[] args) {
- Myqueue<Integer> myqueue = new Myqueue<Integer>(12);
- System.out.println(myqueue.length());
- myqueue.inQueue(1);
- myqueue.inQueue(2);
- myqueue.inQueue(3);
- myqueue.inQueue(4);
- System.out.println(myqueue.toString());
- }
- }
2.链式队列的封装
- package com.pinjia.shop.common.collection;
- import java.util.LinkedList;
- /**
- * Created by wangwei on 2016/12/29.
- */
- public class LinkedQueue<T> {
- //定义链式数据结构
- private class Node{
- private Node next;
- private T data;
- public Node(){}
- public Node(T data,Node next){
- this.next = next;
- this.data = data;
- }
- }
- private Node front;
- private Node rear;
- private int size = 0;
- public LinkedQueue(){
- Node s = new Node(null,null);
- s.next = null;
- front = rear = s;
- }
- //入队
- public void inQueue(T data){
- Node node = new Node(data,null);
- rear.next = node;
- rear = node;
- size++;
- }
- //出队
- public T outQueue(){
- if(front == rear) //空队列
- return null;
- else{
- Node p = front.next;
- T x = p.data;
- front.next = front.next.next;
- if(p.next==null)rear = front;
- p = null;
- size--;
- return x;
- }
- }
- /**
- * 队列长队
- * @return
- * @author WWX
- */
- public int size(){
- return size;
- }
- /**
- * 判断队列是否为空
- * @return
- * @author WWX
- */
- public boolean isEmpty(){
- return size==0;
- }
- public String toString() {
- if(isEmpty()){
- return "[]";
- }else{
- StringBuilder sb = new StringBuilder("[");
- for(Node current=front.next;current!=null;current=current.next){
- sb.append(current.data.toString() + ", ");
- }
- int len = sb.length();
- return sb.delete(len - 2, len).append("]").toString();
- }
- }
- public static void main(String[] args) {
- LinkedQueue<Integer> queue=new LinkedQueue<Integer>();
- queue.inQueue(1);
- queue.inQueue(2);
- queue.inQueue(3);
- queue.inQueue(4);
- queue.inQueue(5);
- queue.inQueue(6);
- System.out.println(queue);
- System.out.println("出队:"+queue.outQueue());
- System.out.println("队列长度="+queue.size());
- System.out.println(queue);
- System.out.println("出队:"+queue.outQueue());
- System.out.println("队列长度="+queue.size());
- System.out.println(queue);
- System.out.println("出队:"+queue.outQueue());
- System.out.println("队列长度="+queue.size());
- System.out.println(queue);
- }
- }
Java关于队列的自我实现的更多相关文章
- atitit. java queue 队列体系and自定义基于数据库的队列总结o7t
atitit. java queue 队列体系and自定义基于数据库的队列总结o7t 1. 阻塞队列和非阻塞队列 1 2. java.util.Queue接口, 1 3. ConcurrentLink ...
- lesson2:java阻塞队列的demo及源码分析
本文向大家展示了java阻塞队列的使用场景.源码分析及特定场景下的使用方式.java的阻塞队列是jdk1.5之后在并发包中提供的一组队列,主要的使用场景是在需要使用生产者消费者模式时,用户不必再通过多 ...
- Java消息队列-Spring整合ActiveMq
1.概述 首先和大家一起回顾一下Java 消息服务,在我之前的博客<Java消息队列-JMS概述>中,我为大家分析了: 消息服务:一个中间件,用于解决两个活多个程序之间的耦合,底层由Jav ...
- java 数据结构 队列的实现
java 数据结构队列的代码实现,可以简单的进行入队列和出队列的操作 /** * java数据结构之队列的实现 * 2016/4/27 **/ package cn.Link; import java ...
- MinerQueue.java 访问队列
MinerQueue.java 访问队列 package com.iteye.injavawetrust.miner; import java.util.HashSet; import java.ut ...
- Java操作队列
Java操作队列 常见的几种模式: 1 简单队列simple 模型:(p + 队列 + c) P:生产者producer,将消息发送到队列 红色:消息队列 C:消费者consumer,从队列消费消 ...
- 数据结构与算法Java描述 队列
package com.cjm.queue; /** * 数据结构与算法Java实现 队列 * * @author 小明 * */ public class Myqueue { private Nod ...
- 细说并发5:Java 阻塞队列源码分析(下)
上一篇 细说并发4:Java 阻塞队列源码分析(上) 我们了解了 ArrayBlockingQueue, LinkedBlockingQueue 和 PriorityBlockingQueue,这篇文 ...
- Java阻塞队列(BlockingQueue)实现 生产者/消费者 示例
Java阻塞队列(BlockingQueue)实现 生产者/消费者 示例 本文由 TonySpark 翻译自 Javarevisited.转载请参见文章末尾的要求. Java.util.concurr ...
随机推荐
- Mybatis的ResultMap的使用
本篇文章通过一个实际工作中遇到的例子开始吧: 工程使用Spring+Mybatis+Mysql开发.具体的业务逻辑很重,对象之间一层一层的嵌套.和数据库表对应的是大量的model类,而和前端交互的是V ...
- display & visibility区别
http://www.cnblogs.com/zhangran/archive/2012/08/29/2662459.html 说明:在学习css的过程中由于其中包含太多的元素.属性等等,总有许多是自 ...
- WPF 检测输入状态
[DllImport("user32.dll")] static extern bool GetLastInputInfo(ref LASTINPUTINFO plii); pub ...
- JAVA HTTP请求 常用的代理设置
由于公司上网实行代理机制, 而最近一段时间又在研究Web上的OpenApi. 没办法一定要使用代理,我之前有文章介绍了httpclient的代理使用方式, 这里介绍基本java的代理使用方式. 最常使 ...
- prototype.js $F()函数介绍
$F()是一个能够简化编码量的函数, 对于字段输入控件有效,包括input.textarea.select等,该函数的输入参数为这些输入控件元素对象的id或元素对象本身,函数负责返回 这些输入控件元素 ...
- Pb (数据存储单位)
PB (数据存储单位) 编辑 pb指petabyte,它是较高级的存储单位,其上还有EB,ZB,YB等单位. 它等于1,125,899,906,842,624(2的50次方)字节,“大约”是一千个te ...
- emmet-vim
最近啊,我投奔了网页的开发,看了一本<head first HTML and CSS>的书,感觉非常不错,然后又配置了一些vim里面用到的插件,现在我把学习到的东西记录下来! 首先,我不会 ...
- linux在所有文件中查找某一个字符
# find <directory> -type f -name "*.c" | xargs grep "<strings>" < ...
- hoj3152-Dice 等比数列求和取模
http://acm.hit.edu.cn/hoj/problem/view?id=3152 Dice My Tags (Edit) Source : Time limit : sec Memory ...
- PHP 基础语法实例及注意事项
<?$varint = 1;$varinteger = "test";$varstring = "tes";$varbool = true;$varflo ...