java代码简单实现队列
1. 基于链表简单实现
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor; /**
* @author <a href="mailto:yanwu0527@163.com">baofeng Xu</a>
* @date 2019/12/10
* <p>
* describe:
*/
public class LinkedQueue<T> {
private static final Integer DEFAULT_SIZE = 10;
/*** 队头 */
private Node front;
/*** 队尾 */
private Node rear;
/*** 长度 */
private Integer size;
/*** 当前所在位置 */
private Integer index; public LinkedQueue() {
this(DEFAULT_SIZE);
} /**
* 初始化队列
*
* @param len
*/
public LinkedQueue(Integer len) {
if (len <= 0) {
throw new IndexOutOfBoundsException();
}
size = len;
index = -1;
} /**
* 入队
*
* @param t
* @return
*/
public boolean enqueue(T t) {
if (index >= size - 1) {
// ----- 超出队列容量
return false;
}
Node newNode = new Node(t, null);
if (index == -1) {
// ----- 当队列中只有一个元素时,队头和队尾为同一个元素
front = rear = newNode;
} else {
// ----- 将新元素置为原有队尾的next,并将新元素置为新的队尾
rear.next = newNode;
rear = newNode;
}
index++;
return true;
} /**
* 出队
*
* @return
*/
public Node dequeue() {
if (front == null) {
return null;
}
// ----- 将队头返回,并将队头的next置为新的队头
Node result = front;
front = front.next;
index--;
return result;
} @Data
@NoArgsConstructor
@AllArgsConstructor
private class Node {
private T data;
private Node next;
} public static void main(String[] args) {
LinkedQueue<Integer> queue = new LinkedQueue<>();
for (int i = 0; i < DEFAULT_SIZE + 1; i++) {
System.out.println("enqueue: " + queue.enqueue(i) + ", item: " + i);
}
for (int i = 0; i < DEFAULT_SIZE + 1; i++) {
System.out.println("dequeue: " + queue.dequeue());
}
}
}
2. 基于数组实现队列
java代码简单实现队列的更多相关文章
- java代码实现顺序队列
java实现顺序队列 package xianxinTable; import java.util.ArrayList; import java.util.Iterator; import com.s ...
- java代码简单练习
总结: package com.ds; import java.awt.Color; import java.awt.FlowLayout; import javax.swing.JFrame; im ...
- 遗传算法与Java代码简单实现
参阅地址: https://www.jianshu.com/p/ae5157c26af9 代码实现: public class GA { private int ChrNum = 10; //染色体数 ...
- Java代码 简单用于处理和数据库相关的操作
package util; import org.apache.commons.beanutils.BeanUtils; import java.lang.reflect.InvocationTarg ...
- java代码简单实现栈
1. 基于数组简单实现 /** * @author <a herf="mailto:yanwu0527@163.com">XuBaofeng</a> * @ ...
- java代码实现队列的优化
package com.voole.queun; /** * @Decription 队列 * @author TMAC-J * */ public class Queun { /** * 初始化队列 ...
- Centos7.4简单安装使用gitlab+maven+jenkins实现java代码的持续集成部署
1.工具的简单介绍 gitlab--源代码版本管理控制工具 maven--java代码编译构建工具 jenkins--基于java开发的自动化持续集成部署工具 sonar--代码质量管理工具 2.gi ...
- Java静态检测工具/Java代码规范和质量检查简单介绍(转)
静态检查: 静态测试包括代码检查.静态结构分析.代码质量度量等.它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行.代码检查代码检查包括代码走查.桌面检查.代码审查等,主要检查代码 ...
- MongoDB最简单的入门教程之三 使用Java代码往MongoDB里插入数据
前两篇教程我们介绍了如何搭建MongoDB的本地环境: MongoDB最简单的入门教程之一 环境搭建 以及如何用nodejs读取MongoDB里的记录: MongoDB最简单的入门教程之二 使用nod ...
随机推荐
- 错误号码1130:Host 'XXX' is not allowed to connect to this MySQL server
今天在linux机器上装了一个mysql,想通过sqlyog远程连接过去,发生了:错误号码1130:Host 'XXX' is not allowed to connect to this MySQL ...
- PHP1.6--数组
一.数组的键值操作函数 1.array_values() 函数作用是返回数组中所有元素的值,只有一个参数,规定传人给定数组,返回一个包含给定数组中所有值的数组,但不保留键名 被返回的数组将使用顺序的数 ...
- JavaScript的基础应用
<!DOCTYPE html> <!--JavaScript基础1--> <html lang="en"> <head> <m ...
- CI框架--URL路径跳转与传值
CI框架使用URL的前提是需要加载辅助函数$this->load->helper('url');当然我建议大家将所有需要加载的东西写在构造方法内,这样就不需每个控制器每个方法都去调用一次了 ...
- DTD约束与schema约束的不同
本篇笔记了解------Schema约束的语法 ------可以参考W3school之Schema教程. Schema:是基于 XML 的 DTD 替代者,用于描述XML文档结构.支持XML 命名空间 ...
- python 读取xml文件
首先,获得标签信息abc.xml <?xml version="1.0" encoding="utf-8"?> <catalog> &l ...
- Vue.之.路由跳转
Vue.之.路由跳转 在进行项目开发的过程中,需要使用路由进行跳转.如下: // 不带有参数,在页面上跳转到别的页面 1. this.$router.push('/login/init'); // ...
- Kth Minimum Clique
Kth Minimum Clique 题目描述 Given a vertex-weighted graph with N vertices, find out the K-th minimum wei ...
- js中的如何定位固定层的位置
需要获取一些HTML的对象的坐标来更灵活的设置目标层的坐标,这里可以通过用到document.body.scrollTop等属性,但是这些属性在xhtml的标准网页中或更简单的说就是带<!DOC ...
- selenium(1):python3.6.4+selenium3.0+chrome环境配置
本文为配置过程: python 1.python3.6.4下载安装见python安装说明.(本博客) 2.安装python的集成编译器PyCharm. PyCharm 是由 JetBrains 打造 ...