队列----java实现
FIFO:先进先出
存储单元:
public class Node {
/*
元素有两部分:
元素
下一个元素的引用
*/
Object data;//数据域
Node next; //指针域
public Node(){}
public Node(Object data,Node next){
this.data=data;
this.next=next;
}
}
实现:
/**
* Created by yaming
* 链式队列---链式存储实现
*/
public class LinkQueue {
private Node first;//队列头,可以删除
private Node last;//队列尾,可以插入
private int size;
/**
* 是否为空
* @return
*/
public boolean isEmpty(){
return size==0;
} /**
* 长度
* @return
*/
public int size(){
return size;
} /**
* 入队
* @param data
* @return
*/
public boolean push(Object data){
Node node=new Node(data,null);
//如果该链队列还是空链队列
if (first == null) {
first = node;
last = first;//只有一个节点,front、rear都指向该节点
} else {
last.next = node;//让尾节点的next指向新增的节点
last = node;//以新节点作为新的尾节点
}
size++;
return true;
} /**
* 出队
* @return
*/
public Object pull(){
Node node = first;
first = first.next;
node.next = null;
size--;
return node.data;
} /**
* 队列尾元素
* @return
*/
public Object getLast(){
if(isEmpty()){
return null;
}
return last.data;
}
public Object getFirst(){
if(isEmpty()){
return null;
}
return first.data; }
public void clear(){
first=null;
last=null;
size=0;
} /**
* 遍历
* @return
*/
public String queue(){
if(isEmpty()){
return "[]";
}else {
StringBuilder stringBuilder=new StringBuilder("[");
for(Node current=first;current!=null;current=current.next){
stringBuilder.append(current.data.toString()+", ");
}
int length=stringBuilder.length();
return stringBuilder.delete(length-2,length).append("]").toString();
}
}
}
队列----java实现的更多相关文章
- java中使用队列:java.util.Queue (转)
Queue接口与List.Set同一级别,都是继承了Collection接口.LinkedList实现了Queue接 口.Queue接口窄化了对LinkedList的方法的访问权限(即在方法中的参数类 ...
- 队列-java代码
public class QueueDemo { private int maxSize; private long[] queueArray; // 队列的头,实际是数组的尾 private int ...
- java中使用队列:java.util.Queue
在java5中新添加了java.util.Queue接口,用以支持队列的常见操作.该接口扩展了java.util.Collection接口.Queue使用时要尽量避免Collection的add()和 ...
- 阻塞队列 - java基于链表的简单实现
1.阻塞队列的原理 阻塞队列与普通队列的区别在于:阻塞队列为空时,从队列中获取元素的操作将会被阻塞,当队列为满时,往队列里添加元素的操作会被阻塞. 试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其 ...
- 剑指offer【05】- 用两个栈实现队列(java)
题目:用两个栈实现队列 考点:栈和队列 题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 解题思路:每次psuh是时先将stack2清空放入stck1(保 ...
- java中使用队列:java.util.Queue(转)
队列是一种特殊的线性表,是运算受到限制的一种线性表,只允许在表的一端进行插入,而在另一端进行删除元素的线性表.队尾(rear)是允许插入的一端.队头(front)是允许删除的一端.空队列是不含元素的空 ...
- 网站架构:消息队列 Java后端架构
2017-01-13 一.消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题.实现高性能,高可用,可伸缩和最终一致性架构.是大型分布式系统不可缺少的中间 ...
- redis实现消息队列-java代码实现
转:https://blog.csdn.net/qq_42175986/article/details/88576849 pom.xml <!-- redis依赖 --> <depe ...
- 05.用两个栈实现队列 Java
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 思路 进栈: 直接进stack1 出栈: 若stack2不为空,则出栈. 否则,当stack1不为空时, ...
- (超详细)动手编写 — 栈、队列 ( Java实现 )
目录 前言 栈 概念 栈的设计 编码实现 小结 队列 概念 队列的设计 编码实现 双端队列 概念 设计 编码 循环队列 循环队列 循环双端队列 声明 前言 栈 概念 什么是栈? **栈 **:是一种特 ...
随机推荐
- $Matrix-Tree$定理-题目
$Matrix-Tree$ 其实矩阵树的题挺好玩的,一些是套班子求答案的,也有一些题目是靠观察基尔霍夫矩阵性质推式子的. 文艺计算姬:https://www.lydsy.com/JudgeOnline ...
- SHELL-收集Oracle已应用的PSU信息
1. 命令收集版本信息 # 创建数据收集脚本文件 OPER_FILE=${EXECUTE_ID}_oper.sh if [[ "${OPER_USER}" = "${US ...
- [国家集训队]JZPFAR
嘟嘟嘟 k-d tree模板之二:查询第k大距离.(所以是怎么上黑的) 因为k-d tree的查询就是暴力嘛,所以我就想到了一个很暴力的做法:每一次查询用一个长度为k的优先队列维护.按距离递增,编号递 ...
- P3265 [JLOI2015]装备购买(高斯消元+贪心,线性代数)
题意; 有n个装备,每个装备有m个属性,每件装备的价值为cost. 小哥,为了省钱,如果第j个装备的属性可以由其他准备组合而来.比如 每个装备属性表示为, b1, b2.......bm . 它可以由 ...
- go标准库的学习-crypto/des
参考:https://studygolang.com/pkgdoc 导入方式: import "crypto/des" des包实现了DES标准和TDEA算法,参见U.S. Fed ...
- vue分页全选和单选操作
<!DOCTYPE html> <html> <head> <title>演示Vue</title> <style> ul,li ...
- 深入浅出的webpack构建工具---HappyPack优化构建(九)
阅读目录 一:什么是HappyPack? 作用是什么? 二:如何在配置中使用HappyPack? 回到顶部 一:什么是HappyPack? 作用是什么? Webpack是允许在NodeJS中的,它是单 ...
- 如何控制docker的CPU和内存份额
1.内存:docker run -it -m 200M --memory-swap=300M progrium/stress --vm 1 --vm-bytes 500M 刚开始会报错: docker ...
- 一个简单的javascript节流器实现
节流器 javascript的节流器主要用于延缓某些动作的执行,比如ajax请求,如果input框注册了input事件,那么当用户输入时就会持续的触发这个事件,如果回调函数中持续的通过ajax调用后台 ...
- 解决 java.net.BindException: Address already in use (Bind failed)
这是因为tomcat未正确关闭导致的端口占用问题 找到报错中被占用的端口kill掉进程即可,一般是8080,也有下面这种8005的 11-Mar-2019 14:46:12.405 SEVERE [m ...