2019独角兽企业重金招聘Python工程师标准>>>

public class LinkQueue<T> {// 定义内部类Node, Node实例代表链队列的节点private class Node {// 保存节点的数据private T data;// 指向下个节点的引用private Node next;// 无参数的构造器public Node() {}// 初始化全部属性的构造器public Node(T data, Node next) {this.data = data;this.next = next;}}// 保存该链队列的头节点private Node front;// 保存该链队列的尾节点private Node rear;// 保存该链队列中已包含的节点数private int size;// 创建空链队列public LinkQueue() {// 空链队列,front和rear都是nullfront = null;rear  = null;}// 以指定数据元素来创建链队列,该链队列只有一个元素public LinkQueue(T element) {front = new Node(element, null);// 只有一个节点,front、rear都指向该节点rear = front;size++;}// 返回链队列的长度public int length() {return size;}// 将新元素加入队列public void add(T element) {// 如果该链队列还是空链队列if (front == null) {front = new Node(element, null);// 只有一个节点,front、rear都指向该节点rear = front;} else {// 创建新节点Node newNode = new Node(element, null);// 让尾节点的next指向新增的节点rear.next = newNode;// 以新节点作为新的尾节点rear = newNode;}size++;}// 删除队列front端的元素public T remove() {Node oldFront = front;front = front.next;oldFront.next = null;size--;return oldFront.data;}// 访问链式队列中最后一个元素public T element() {return rear.data;}// 判断链式队列是否为空队列public boolean empty() {return size == 0;}// 清空链public void clear() {// 将front、rear两个节点赋为nullfront = null;rear  = null;size  = 0;}public String toString() {if (empty()) {return "[]";} else {StringBuilder sb = new StringBuilder("[");for (Node current = front; current != null; current = current.next) {sb.append(current.data.toString() + ", ");}int len = sb.length();return sb.delete(len - 2, len).append("]").toString();}}
}
public class LinkQueueTest {public static void main(String[] args) {LinkQueue<String> queue = new LinkQueue<String>("aaaa");queue.add("bbbb");queue.add("cccc");System.out.println("链队列初始化元素:" + queue.toString());queue.remove();System.out.println("删除一个元素后队列:" + queue.toString());queue.add("dddd");System.out.println("再次添加元素后的队列:" + queue);queue.remove();queue.add("eeee");System.out.println(queue);}
}

转载于:https://my.oschina.net/u/3545495/blog/1649225

【数据结构】队列之链队列相关推荐

  1. 大话数据结构系列之链队列结构(十二)

    文章目录 定义 链队列 VS 循环队列 链队列代码实现( C .Java ) 定义 队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出而异,我们把它简称为链队列 链队列 VS 循环队列 ...

  2. 数据结构-队列之链式队列

    队列的链式表示称为链队列,它实际上是一个同时带有队头指针和队尾指针的单链表.头指针指向队头节点,尾指针指向队尾节点,即单链表的最后一个节点. 当q.front==NULL且q.rear==NULL时, ...

  3. 数据结构与算法---队列

    数据结构与算法-队列 1. 队列的定义: 队列(Queue )简称队,是一种操作受限制 的线性表 ,只允许在表的一端进行插入,而在表的另一端进行删除.向队列中插入元素称为入队或进队: 删除元素称为出队 ...

  4. 浅谈算法和数据结构: 五 优先级队列与堆排序

    原文:浅谈算法和数据结构: 五 优先级队列与堆排序 在很多应用中,我们通常需要按照优先级情况对待处理对象进行处理,比如首先处理优先级最高的对象,然后处理次高的对象.最简单的一个例子就是,在手机上玩游戏 ...

  5. 大话数据结构-栈与队列

    文章知识点来至于大话数据结构里边章节知识, 这篇主要介绍栈与队列在计算机中存储形式, 以及在某些算法领域中对栈和队列的相关应用.章节最后介绍了著名的逆波兰表达式, 以及通过算法来实现该表达式的运算过程 ...

  6. sdut 2135 数据结构实验之队列一:排队买饭

    数据结构实验之队列一:排队买饭 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Descriptio ...

  7. 数据结构与算法笔记(五)——队列(FIFO队列、双端队列)

    一.FIFO队列 1.1.概念 队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表. 队列是一种先进先出的(First In First Out)的线性表,简称FIFO.允许 ...

  8. 算法与数据结构 -- 栈与队列(四)

    栈与队列定义了数据的操作 一.栈 栈是一种先入先出的数据结构.可以用顺序表实现,也可以用链表实现 栈操作 判断是否为空 压栈.入栈push 出栈 pop 返回栈顶元素 peek 栈的元素个数 # co ...

  9. Python数据结构学习笔记——队列和双端队列

    目录 一.队列的定义 二.队列 实现步骤分析 三.队列的Python实现代码 四.队列的应用 六人传土豆游戏 五.双端队列的定义 六.双端队列 实现步骤分析 七.双端队列的Python实现代码 八.双 ...

最新文章

  1. git-flow工作流说明
  2. 操作系统是计算机软件的核心 它直接监管,华工 网络 操作系统课后作业
  3. UPC2710T高频放大器
  4. 万万想不到,你是这样的“闲鱼”!
  5. BZOJ 2502: 清理雪道 [最小流]
  6. Android 自定义 spinner (背景、字体颜色)
  7. mysql处理高并发,防止库存超卖
  8. java工资高还是php_java和php哪个工资高
  9. python 直方图的绘制方法全解_python plotly绘制直方图实例详解
  10. AccountManagment
  11. Linux学习笔记之一
  12. vue 中v-if 与v-show 的区别
  13. 香港科技大学(广州)智能交通学域招收博士/RA 22Fall, 23 Spring/Fall
  14. layui单选框verify_layui 单选框选中事件
  15. ALSA DAPM创建codec到codec的dai连接
  16. 车间调度建模系列6|扩展析取图之顺序不依赖准备时间
  17. 计算机与不确定性原理,傅里叶变换和不确定性原理
  18. python md5加密解密_python md5加密解密
  19. 教你用Excel做高级甘特图
  20. [转载]探索J2ME:用GCF通信

热门文章

  1. 第四次作业,孙保平034
  2. JSP/Servlet 工作原理
  3. IOS中Json解析的四种方法
  4. 《软件设计精要与模式》前言
  5. 计算机计量g代表,计算机中的有些计量单位例如G、MB是表示什么意思?
  6. linux日志按照时间切割,Linux下把tomcat日志按日期自动分割
  7. AndoridSQLite数据库开发基础教程(4)
  8. Xamarin Essentials教程设备信息DeviceInfo
  9. iOS 9音频应用开发基础教程(大学霸内部资料)
  10. Kail Linux渗透测试教程之网络扫描和嗅探工具Nmap