public class QueueLinked<T> { private class Node<T> { T data; Node<T> next; Node<T> pre; public Node(T data) { this.data = data; } } Node<T> head = null; Node<T> tail = null; public void add(T data) { Node<T> node = new Node<T>(data); if(head==null) { head = node; tail = node; }else { tail.next = node; node.pre = tail; tail = node; } } public T popTail() { if(tail==null) { return null; }else { Node<T> node = tail; tail = node.pre; if(tail!=null) { tail.next = null; } node.pre = null; return node.data; } } public T popHead() { if(head==null) { return null; }else { Node<T> node = head; head = node.next; if(head!=null) { head.pre = null; } node.next = null; return node.data; } } public int size() { int count = 0; Node<T> node = head; while(node!=null) { count++; node = node.next; } return count; } public static void main(String[] args) { QueueLinked<Message> queue = new QueueLinked<Message>(); Message message1 = new Message(); message1.setMethod("信息1"); queue.add(message1); Message message2 = new Message(); message2.setMethod("信息2"); queue.add(message2); System.out.println(queue.size()); Message message = null; while((message=queue.popTail())!=null) { System.out.println(message.getMethod()); } } }
相关推荐
在实现基于链表的队列时,我们可以使用Java语言来编写链表队列类,包括以下几个部分: 1. 定义链表队列类:我们可以定义一个链表队列类,实现队列接口。 2. 实现链表队列操作:我们可以实现链表队列的添加、删除、...
* 基于双向链表实现双端队列结构 */ package dsa; public class Deque_DLNode implements Deque { protected DLNode header;//指向头节点(哨兵) protected DLNode trailer;//指向尾节点(哨兵) protected ...
Java链表是编程中一种基础且重要的数据结构,它在许多场景下有着广泛的应用。本文将结合个人学习心得,深入探讨Java链表的核心概念、实现方式以及与其他编程语言的互通性。 首先,链表是一种线性数据结构,与数组...
### 基于多队列反馈的进程调度 #### 概述 进程调度是操作系统中的一个核心机制,它负责管理CPU资源,确保多个进程能够合理地共享处理器的时间。本实训项目设计了一种基于时间片的多队列反馈式调度算法,并通过编程...
在Java中,`java.util.Timer`类和`java.util.TimerTask`类提供了这样的功能,但它们是基于线程的,而非链表实现。然而,如果我们想用链表来实现定时器,我们可以模拟这个过程,创建一个节点代表每个待执行的任务,...
Java中的队列是一种数据结构,它遵循先进先出(FIFO)原则,即最先插入的元素将是最先被删除的。在Java中,队列的实现主要有三种:顺序队列、链式队列和循环队列。下面我们将详细探讨这三种队列的实现方式。 1. **...
本篇将详细介绍基于Java实现的队列和堆栈,并探讨它们的工作原理、实现方式以及实际应用。 1. **队列(Queue)** - **定义**:队列是一种先进先出(FIFO,First In First Out)的数据结构,类似于现实生活中的排队...
接下来,`StringLinkedList.java`文件应该实现了基于`ListNode`的链表操作。这是一个字符串链表,意味着每个节点可能包含一个字符串。一个简单的`StringLinkedList`类可能包含以下方法: 1. **构造函数**:初始化空...
在实际开发中,循环双链表常用于需要快速访问链表两端元素的情况,例如实现队列或栈的数据结构。其优点在于可以双向遍历,而且由于是循环的,查找链表的头部和尾部都非常快捷。然而,相比于数组或ArrayList,链表在...
描述中提到队列的代码引用了链表,这意味着队列可能是基于链表实现的,这样可以方便地在两端添加或移除元素,无需像数组那样移动大量元素。 4. **链表(Linked List)**:链表是由一系列节点组成的数据结构,每个...
链队列,顾名思义,是基于链表实现的队列数据结构。队列是一种遵循“先进先出”(FIFO,First In First Out)原则的数据结构,类似于现实生活中的排队等待。在链队列中,元素按照加入的顺序排列,第一个加入的元素被...
而`LinkedBlockingQueue`是基于链表的阻塞队列,容量可以无限大,但在高并发场景下可能会有额外的内存开销。 在实际编程中,我们可以通过实现`Runnable`接口创建生产者和消费者线程,并利用`ExecutorService`来管理...
* 基于双向链表实现双端队列结构 */ package dsa; public class Deque_DLNode implements Deque { protected DLNode header;//指向头节点(哨兵) protected DLNode trailer;//指向尾节点(哨兵) protected ...
LinkedBlockingQueue是基于链表结构实现的阻塞队列,其内部节点为Node类,包含元素值和指向下一个节点的引用。与ArrayBlockingQueue不同,LinkedBlockingQueue的容量可以是Integer.MAX_VALUE(即无界队列),也可以...
ArrayList基于动态数组,而LinkedList基于链表。LinkedList类实现了List接口,提供了丰富的链表操作方法,如add、remove、get等。 5. 链表的优点与缺点: 优点: - 动态扩展:链表可以随时添加或删除元素,不需要...
在实际项目中,根据需求可以扩展更多的功能,例如支持多线程环境下的并发操作,或者提供基于链表的实现来避免数组下标计算的复杂性。 环形队列在很多场景下都有应用,如操作系统中的缓冲区管理、消息队列、任务调度...
基数排序(radix sort)又称桶排序(bucket sort),相对于常见的比较排序,基数排序是一种分配式排序,需要将关键字...为了尽可能少的消耗复制时占用的空间,桶的数据结构选择链表,为了构造队列,选择使用双向列表。
本压缩包"基于JAVA实现的常用数据结构代码"包含了多个关键的数据结构实现,包括复杂度分析、动态数组、链表、栈、队列以及二叉搜索树。以下是这些数据结构的详细说明: 1. **复杂度**:在计算机科学中,复杂度分为...
在这个基于Java实现数据结构链表相关程序的压缩包中,我们主要关注的是如何用Java来创建和操作链表。 链表不同于数组,它不连续存储数据,而是通过节点之间的引用连接。每个节点包含两部分:数据元素(data)和指向...
- Java的`java.util.PriorityQueue`是优先队列的实现,它基于二叉堆(通常是最小堆),满足堆的性质:父节点的优先级总是不小于子节点。 - PriorityQueue支持`add()`、`offer()`、`peek()`、`poll()`等方法,分别...