title: 基于链表实现队列(基于Java实现)
tags: 链表 队列


基于链表的队列实现方法的原理:

基于链表的实现,跟前面的基于数组实现一样,同样也需要两个指针:head指针和tail指针。它们分别指向链表的第一个结点和最后一个结点。如下图所示,入队时,tail->next = new_node,tail = tail->next; 出队时,head = head->next。

具体代码如下:

package com.company;//基于链表实现队列
public class LinkedQueue {//队列的队首和队尾private Node head = null;private Node tail = null;//入队public void enqueue(String value){//tail == null时,说明该队列此时为空队列if(tail == null){Node newNode = new Node(value, null);head = newNode;tail = newNode;}else{tail.next = new Node(value, null);tail = tail.next;}}//出队public String dequeue(){//如果队列为空,则返回null值。if (head == null) return null;String value = head.data;head = head.next//这里是考虑到链表中只有一个数据,当出队操作后,tail应该也为null值。if(head == null){tail = null;}return value;}public void printAll(){Node p = head;while(p != null){System.out.println(p.data);p = p.next;}}//定义一个内部类,将链表中当前结点的值以及指向下一个结点的地址封装Node类private static class Node{private String data;private Node next;public Node(String data, Node next){this.data = data;this.next = next;}public String getData(){return data;}}public static void main(String[] args) {LinkedQueue lq = new LinkedQueue();lq.enqueue("abc");lq.enqueue("def");lq.enqueue("hikl");lq.enqueue("xyz");lq.dequeue();lq.printAll();}
}

输出的结果:

def
hikl
xyz

欢迎浏览我的个人博客:https://chasing987.github.io/

基于链表实现队列(基于Java实现)相关推荐

  1. 基于数组实现队列(基于Java实现)

    title: 基于数组实现队列(基于Java实现) tags: 数组 队列 基于数组实现队列的原理: 基于数组实现的队列,使用两个指针,一个是head指针 ,指向的是队头:一个是tail指针,指向队尾 ...

  2. HashTab基于链表简单实现(java,不包含扩容)

    一.文件目录 二.代码 /*** 定义一个雇员*/ public class Emp {public int id;public String name;//默认为nullpublic Emp nex ...

  3. 队列 开源 php,消息队列 - 基于think-queue消息队列 – 基于ThinkPHP和Bootstrap的极速后台开发框架...

    安装 本插件依赖thinkphp官方提供的think-queue队列,安装:composer require topthink/think-queue 安装后在application/extra下将产 ...

  4. java链表集合_Java底层基于链表实现集合和映射--集合Set操作详解

    本文实例讲述了Java底层基于链表实现集合和映射--集合Set操作.分享给大家供大家参考,具体如下: 在Java底层基于二叉搜索树实现集合和映射中我们实现了底层基于二叉搜索树的集合,本节就底层如何基于 ...

  5. 常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构)

    常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...

  6. 一个基于链表的内存管理方案

    在Open×××中,一种很不错的内存管理方案是基于链表的,该方案的实现使用了一个gc_arena结构体,该结构体的作用就是将所有的动态分配的内存块收集汇集起来,然后就可以在一个地方统一释放,c语言对动 ...

  7. 用链表c语言程序设计,C语言程序设计-基于链表的学生成绩管理系统

    <C语言程序设计-基于链表的学生成绩管理系统>由会员分享,可在线阅读,更多相关<C语言程序设计-基于链表的学生成绩管理系统(18页珍藏版)>请在人人文库网上搜索. 1.华北科技 ...

  8. java实现for文件删除_Java 添加、删除、替换、格式化Word中的文本的步骤详解(基于Spire.Cloud.SDK for Java)...

    Spire.Cloud.SDK for Java提供了TextRangesApi接口可通过addTextRange()添加文本.deleteTextRange()删除文本.updateTextRang ...

  9. 设计自己的基于Selenium 的自动化测试框架-Java版(3) - 给框架分分层

    设计自己的基于Selenium 的自动化测试框架-Java版(3) - 给框架分分层 给我们的框架分为3层,分别是叫逻辑层,数据层,对象层. 这三层的存储格式都用xml来表示. 1.逻辑层 (test ...

最新文章

  1. 【疯狂积累CSS】2:利用@media screen实现网页布局的自适应
  2. http中post和get方法区别
  3. Acwing第 36 场周赛【完结】
  4. CyanogenMod源码编译模拟器
  5. Java基本语法(11)--三元运算符
  6. kotlin键值对数组_Kotlin程序检查数组是否包含给定值
  7. 我的天!我靠这个拥有了自己第一架无人机!
  8. (77)FPGA面试题-Verilog实现二分频
  9. php 前端加密密码,WEB前端对应PHP后端的AES加密解密代码
  10. 朱光潜:要有悲剧,才能算人生
  11. NSSM - 将任何exe应用封装成windows服务的神器
  12. OAuth2 vs JWT,到底怎么选?
  13. 搭建属于自己的影视网站
  14. 【链世纪对话系列No.9】浪潮存储资深架构师叶毓睿:浪潮如何助力分布式云存储数据中心快速发展?
  15. 四种属性范围(重点)
  16. html+css悬浮加速器
  17. Unity中的Transform Gizmo中的Pivot和Center
  18. Java-按照指定小时分割时间段
  19. 国内三大B2C网站首页的信息架构【收集整理,本人非原作者】
  20. Android UI开发细节Api使用技巧总结

热门文章

  1. [k8s] 第八章 数据存储
  2. 烂大街的Spring循环依赖该如何回答?
  3. nginx try_files的理解
  4. 解压版mysql安装服务失败怎么办_mysql-8.0.17解压版安装步骤及MySQL服务无法启动问题的解决办法...
  5. tc写入txt成功却没有内容_挖洞经验 | 构造UserAgent请求头内容实现LFI到RCE提权
  6. Python开发基础总结(三)排序+迭代+生成器+装饰器
  7. php 为什么定义常量,php-将预定义常量定义为什么
  8. google python代码规范_如何用好python编码规范,写一手漂亮的代码
  9. 非修改md5视频去重消重软件视频去重视频消重怎么弄
  10. 【c语言】整型数据的溢出