`
落叶换新叶
  • 浏览: 25727 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

java 基于链表的队列

阅读更多
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());
		}
		
	}
}

 

0
0
分享到:
评论

相关推荐

    java链表应用--基于链表实现队列详解(尾指针操作)

    在实现基于链表的队列时,我们可以使用Java语言来编写链表队列类,包括以下几个部分: 1. 定义链表队列类:我们可以定义一个链表队列类,实现队列接口。 2. 实现链表队列操作:我们可以实现链表队列的添加、删除、...

    Java基于双向链表实现双端队列结构(算法源码)

    * 基于双向链表实现双端队列结构 */ package dsa; public class Deque_DLNode implements Deque { protected DLNode header;//指向头节点(哨兵) protected DLNode trailer;//指向尾节点(哨兵) protected ...

    java链表 个人总结

    Java链表是编程中一种基础且重要的数据结构,它在许多场景下有着广泛的应用。本文将结合个人学习心得,深入探讨Java链表的核心概念、实现方式以及与其他编程语言的互通性。 首先,链表是一种线性数据结构,与数组...

    基于多队列反馈的进程调度

    ### 基于多队列反馈的进程调度 #### 概述 进程调度是操作系统中的一个核心机制,它负责管理CPU资源,确保多个进程能够合理地共享处理器的时间。本实训项目设计了一种基于时间片的多队列反馈式调度算法,并通过编程...

    java版链表实现定时器功能

    在Java中,`java.util.Timer`类和`java.util.TimerTask`类提供了这样的功能,但它们是基于线程的,而非链表实现。然而,如果我们想用链表来实现定时器,我们可以模拟这个过程,创建一个节点代表每个待执行的任务,...

    java队列实现(顺序队列、链式队列、循环队列)

    Java中的队列是一种数据结构,它遵循先进先出(FIFO)原则,即最先插入的元素将是最先被删除的。在Java中,队列的实现主要有三种:顺序队列、链式队列和循环队列。下面我们将详细探讨这三种队列的实现方式。 1. **...

    基于 Java 实现的队列和堆栈

    本篇将详细介绍基于Java实现的队列和堆栈,并探讨它们的工作原理、实现方式以及实际应用。 1. **队列(Queue)** - **定义**:队列是一种先进先出(FIFO,First In First Out)的数据结构,类似于现实生活中的排队...

    JAVA 链表实验源代码

    接下来,`StringLinkedList.java`文件应该实现了基于`ListNode`的链表操作。这是一个字符串链表,意味着每个节点可能包含一个字符串。一个简单的`StringLinkedList`类可能包含以下方法: 1. **构造函数**:初始化空...

    基于java的循环双链表

    在实际开发中,循环双链表常用于需要快速访问链表两端元素的情况,例如实现队列或栈的数据结构。其优点在于可以双向遍历,而且由于是循环的,查找链表的头部和尾部都非常快捷。然而,相比于数组或ArrayList,链表在...

    Java版数据结构代码,栈,动态数组,队列,链表,二叉树

    描述中提到队列的代码引用了链表,这意味着队列可能是基于链表实现的,这样可以方便地在两端添加或移除元素,无需像数组那样移动大量元素。 4. **链表(Linked List)**:链表是由一系列节点组成的数据结构,每个...

    数据结构:链队列

    链队列,顾名思义,是基于链表实现的队列数据结构。队列是一种遵循“先进先出”(FIFO,First In First Out)原则的数据结构,类似于现实生活中的排队等待。在链队列中,元素按照加入的顺序排列,第一个加入的元素被...

    java模拟阻塞队列

    而`LinkedBlockingQueue`是基于链表的阻塞队列,容量可以无限大,但在高并发场景下可能会有额外的内存开销。 在实际编程中,我们可以通过实现`Runnable`接口创建生产者和消费者线程,并利用`ExecutorService`来管理...

    基于双向链表实现双端队列结构算法(java算法源码)

    * 基于双向链表实现双端队列结构 */ package dsa; public class Deque_DLNode implements Deque { protected DLNode header;//指向头节点(哨兵) protected DLNode trailer;//指向尾节点(哨兵) protected ...

    阻塞队列阻塞队列阻塞队列

    LinkedBlockingQueue是基于链表结构实现的阻塞队列,其内部节点为Node类,包含元素值和指向下一个节点的引用。与ArrayBlockingQueue不同,LinkedBlockingQueue的容量可以是Integer.MAX_VALUE(即无界队列),也可以...

    MLDN魔乐JAVA_13链表.MLDN魔乐JAVA_13链表.rar

    ArrayList基于动态数组,而LinkedList基于链表。LinkedList类实现了List接口,提供了丰富的链表操作方法,如add、remove、get等。 5. 链表的优点与缺点: 优点: - 动态扩展:链表可以随时添加或删除元素,不需要...

    java版实现环形队列

    在实际项目中,根据需求可以扩展更多的功能,例如支持多线程环境下的并发操作,或者提供基于链表的实现来避免数组下标计算的复杂性。 环形队列在很多场景下都有应用,如操作系统中的缓冲区管理、消息队列、任务调度...

    基于双向链表的基数排序

    基数排序(radix sort)又称桶排序(bucket sort),相对于常见的比较排序,基数排序是一种分配式排序,需要将关键字...为了尽可能少的消耗复制时占用的空间,桶的数据结构选择链表,为了构造队列,选择使用双向列表。

    基于JAVA实现的常用数据结构代码,JAVA实现复杂度、动态数组、链表、栈、队列、二叉搜索树等

    本压缩包"基于JAVA实现的常用数据结构代码"包含了多个关键的数据结构实现,包括复杂度分析、动态数组、链表、栈、队列以及二叉搜索树。以下是这些数据结构的详细说明: 1. **复杂度**:在计算机科学中,复杂度分为...

    基于Java实现数据结构链表相关程序.zip

    在这个基于Java实现数据结构链表相关程序的压缩包中,我们主要关注的是如何用Java来创建和操作链表。 链表不同于数组,它不连续存储数据,而是通过节点之间的引用连接。每个节点包含两部分:数据元素(data)和指向...

    优先队列算法实现(Java)

    - Java的`java.util.PriorityQueue`是优先队列的实现,它基于二叉堆(通常是最小堆),满足堆的性质:父节点的优先级总是不小于子节点。 - PriorityQueue支持`add()`、`offer()`、`peek()`、`poll()`等方法,分别...

Global site tag (gtag.js) - Google Analytics