- 浏览: 605190 次
- 来自: ...
文章分类
最新评论
-
lgh1992314:
相同的元素呢
一种离散化方法 -
HelloSummerR:
圆心的位置是随机的,于是圆的部分会落到canvas外,那样就显 ...
HTML5 Canvas学习笔记(1)处理鼠标事件 -
hlstudio:
好久没见到sokuban了,这有个java版的,带源码,可以参 ...
求推箱子的最小步数(java) -
肖泽文:
太好了,谢谢你。。有中文注释!
HTML5 推箱子游戏过关演示动画 -
swm8023:
删除操作,将最后一个叶子节点插入后也有可能上浮吧
彻底弄懂最大堆的四种操作(图解+程序)(JAVA)
单链表实现队列,这里采用带头结点的单链表结构。根据单链表的特点,选择链表的头部作为队首,链表的尾部作为队尾。除了链表头结点需要通过一个引用来指向之外,还需要一个对链表尾结点的引用,以方便队列的入队操作的实现。为此一共设置了两个指针,一个队首指针和一个队尾指针,队首指针指向队首元素的前一个结点,即始终指向链表空的头结点,队尾指针指向队列当前队尾元素所在的结点。当队列为空时,队首指针与队尾指针均指向空的头结点。
在java jdk中有java.util.Queue接口,用以支持队列的常见操作。该接口扩展了java.util.Collection接口。
Queue使用时要尽量避免Collection的add()和remove()方法,而是要使用offer()来加入元素,使用poll()来获取并移出元素。它们的优点是通过返回值可以判断成功与否,add()和remove()方法在失败的时候会抛出异常。 如果要使用前端而不移出该元素,使用
element()或者peek()方法。
值得注意的是LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。
下载代码:
public class Queue<T> implements QueueInterface<T> { private Node<T> front; private Node<T> rear; private int size; //队列的大小 public Queue() { front=new Node<T>(); rear=front; size = 0; } //返回队列的大小 public int getSize() { return size; } //判断队列是否为空 public boolean isEmpty() { return size==0; } //数据元素e入队 public void offer(T t) { Node<T> q = new Node<T>(t,null); rear.setNext(q); rear=q; size++; } //队首元素出队 public T poll() throws QueueEmptyException { if (size<1) throw new QueueEmptyException("错误,队列为空。"); Node<T> t = front.getNext(); front.setNext(t.getNext()); size--; if(size<1){ rear=front; size=0; } return t.getData(); } //取队首元素 public T peek() throws QueueEmptyException { if (size<1) throw new QueueEmptyException("错误,队列为空。"); return front.getNext().getData(); } //测试 public static void main(String[] args) { Queue<String> queue = new Queue<String>(); queue.offer("Hello"); queue.offer("World!"); queue.offer("你好!"); System.out.println(queue.getSize()); while(!queue.isEmpty()){ System.out.print(queue.poll()); } System.out.println(); System.out.println(queue.getSize()); } } interface QueueInterface<T> { //返回队列的大小 public int getSize(); //判断队列是否为空 public boolean isEmpty(); //数据元素t入队 public void offer(T t); //栈顶元素出队 public T poll() throws QueueEmptyException; //取队首元素 public T peek() throws QueueEmptyException; } class Node< T> { private T data; private Node< T> next; public Node() { this(null,null); } public Node(T data, Node< T> next) { this.data = data; this.next = next; } public T getData(){ return data; } public void setData(T data){ this.data=data; } public Node<T> getNext(){ return this.next; } public void setNext(Node<T> next){ this.next=next; } } //队列为空时出栈或取栈顶元素抛出此异常 class QueueEmptyException extends RuntimeException{ public QueueEmptyException(String err) { super(err); } }
在java jdk中有java.util.Queue接口,用以支持队列的常见操作。该接口扩展了java.util.Collection接口。
Queue使用时要尽量避免Collection的add()和remove()方法,而是要使用offer()来加入元素,使用poll()来获取并移出元素。它们的优点是通过返回值可以判断成功与否,add()和remove()方法在失败的时候会抛出异常。 如果要使用前端而不移出该元素,使用
element()或者peek()方法。
值得注意的是LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。
下载代码:
- Queue.zip (951 Bytes)
- 下载次数: 1
发表评论
-
求二叉树上任意两个节点的最近公共父节点
2013-01-09 10:24 2407北大百练题2756: 如上图所示,由正整数1, 2 ... -
JAVA判断二叉树是否是二叉平衡树
2013-01-07 18:59 1994import java.util.*; ... -
大顶堆应用:POJ2010
2012-12-23 20:59 1918POJ2010题意: 奶牛学校招生,c头奶牛报名,要选 ... -
二维树状数组学习之二:练习POJ 1195
2012-12-12 21:40 1401接前文:二维树状数组学习之一:彻底理解http://128kj ... -
二维树状数组学习之一:彻底理解
2012-12-12 20:54 2481当要频繁的对数组元素进行修改,同时又要频繁的查询数组内 ... -
图的深搜+树状数组练习 POJ 3321(JAVA)
2012-12-11 11:13 1850关于树状数组:参看:http://128kj.iteye.co ... -
树状数组练习:POJ 3067
2012-12-09 17:10 1848关于树状数组,参看:http://128kj.iteye.co ... -
树状数组练习:POJ 2481(JAVA)
2012-12-08 18:11 1824关于树状数组,请参考:http://128kj.iteye.c ... -
初步了解树状数组
2012-12-07 14:18 1798一、树状数组是干什么的? 平常我们会遇到一些对数组进 ... -
线段树求逆序数(离散化)POJ 2299
2012-12-06 08:25 2127POJ2299题意: 给出长度为n的序列,每次只能交换 ... -
利用线段树求逆序数(JAVA)
2012-12-04 22:46 2601设A[1…n]是一个包含n个不同数的数组。如果在i< ... -
线段树入门学习(三)懒操作(兼解POJ1823) JAVA
2012-12-02 15:37 2142继续上文"线段树入门学习(二)" ht ... -
线段树入门学习(二)(兼解POJ3468) JAVA
2012-11-30 16:55 2567继续上文http://128kj.iteye. ... -
线段树入门学习(兼解HDU1754)
2012-11-30 11:24 2733先看网上的介绍: 线段树也叫区间树,顾名思义,线段树是 ... -
AVL树及JAVA实现
2012-11-26 16:34 2312一棵AVL树是其每个节点的左子树和右子树的高度最多差1的二 ... -
图解平衡二叉树
2012-11-26 11:34 2066形态匀称的二叉树 ... -
深度优先遍历字典树(统计单词出现的个数)
2012-11-23 22:18 2858例:给出一个字符文本,每行一个字符串,统计不同的字符串出现的百 ... -
学习使用字典树(JAVA)
2012-11-22 09:25 2152字典树 又称单词 ... -
彻底弄懂最大堆的四种操作(图解+程序)(JAVA)
2012-11-17 21:50 18742堆有最大堆和最小堆之分,最大堆就是每个节点的值都>= ... -
并查集入门精讲,实例2个(JAVA)
2012-10-30 14:47 4078一、什么是并查集 ...
相关推荐
在Java中,队列的实现主要有三种:顺序队列、链式队列和循环队列。下面我们将详细探讨这三种队列的实现方式。 1. **顺序队列**: 顺序队列通常是基于数组实现的。在Java中,我们可以使用ArrayList或LinkedList来...
Java 中提供了多种实现队列的方法,包括顺序队列、链式队列和循环队列等。下面我们将详细介绍每种队列的实现方法和特点。 一、顺序队列 顺序队列是指使用数组来实现队列的数据结构。它的特点是元素在数组中的位置...
JAVA语言实现数据的链式结构 分享下挣挣人气
下面将详细讨论链式队列的表示、实现、以及常用的操作。 首先,我们来看链式队列的表示。链式队列由两部分组成:队头(front)和队尾(rear)。队头指向队列的第一个元素,而队尾指向当前队列的最后一个元素。在...
在编程语言中,链式队列的实现通常涉及到指针或者引用的概念,例如在C++、C#、Java等面向对象的语言中,可以定义一个节点类(Node)和一个队列类(Queue)。队列类包含对头节点和尾节点的引用,以及相关的操作方法。...
本篇文章将详细探讨链队列,包括它的定义、工作原理以及如何在实际编程中实现。 链队列,顾名思义,是基于链表实现的队列数据结构。队列是一种遵循“先进先出”(FIFO,First In First Out)原则的数据结构,类似于...
Java中的队列是一种数据结构,遵循“先入先出”(FIFO)的原则,主要用于实现生产者消费者模式。队列在并发编程中的应用尤为广泛,因为在多线程环境下,多个生产者或消费者可能同时对队列进行操作,因此线程安全的...
3. 高级数据结构实现:如Java的`java.util.Queue`接口,提供了多种队列实现,如`ArrayDeque`(基于数组的双端队列)、`LinkedList`(链表实现)等。 队列的应用场景: 1. 打印机任务调度:新任务入队,完成的任务出...
例如,可能会有C++、Java、Python或其他语言的实现,每种语言都有其特定的语法和数据结构处理方式。 为了更好地学习和应用这些源代码,你可以: - 分析每个文件的代码结构,了解它们是如何创建、初始化、添加元素...
用循环队列解决约瑟夫环问题减少用顺序表在出对是循环移动带来的空间复杂度
这里提到的"LinkQueue"可能是一个链式队列,它是基于链表实现的队列。链式队列的优点在于插入和删除操作的时间复杂度较低,通常为O(1),因为这些操作仅涉及改变几个指针。在Python中,我们可以使用列表模拟链式队列...
Java提供多种实现队列的方式,如`java.util.LinkedList`可以用来创建双端队列,`java.util.Queue`接口提供了队列的基本操作,而`java.util.concurrent ArrayBlockingQueue`等并发队列类适用于多线程环境。...
总之,LinkedList集合类通过其内在的链式结构特性,灵活地支持了栈和队列这两种数据结构的实现,为Java程序员提供了处理动态数据集合的有效工具。理解并熟练掌握这些数据结构的实现,对于编写高效的Java代码至关重要...
循环队列的实现方法有两种,一种是使用链式存储,另一种是使用数组实现循环队列。在本文中,我们将着重介绍基于Java数组实现循环队列的两种方法。 知识点3:基于Java数组实现循环队列的第一种方法 第一种方法是...
本压缩包文件“duilie.rar”似乎包含了关于FCFS调度算法及其在链式队列中的实现的详细资料。 首先,我们来理解一下"先来先服务"调度算法。FCFS是最直观的调度方法,它按照进程到达系统的顺序进行处理。一旦一个进程...
10.链式队列以及优先级队列应用.ppt
在Java或Android环境中,我们可以使用ArrayList或LinkedList等内置数据结构来实现循环队列,但为了更好地控制队列的头部和尾部,我们通常选择自定义一个类来实现。以下是一个简单的循环队列实现: ```java public ...
在Java编程中,数据结构是实现高效算法的基础,队列是一种基本的数据结构,它遵循“先进先出”(FIFO)原则。在这个基于Java的数据结构实验中,我们专注于队列的实现,特别是顺序队列。实验的主要目的是让学生理解和...
"java实现队列数据结构代码详解" 本文主要介绍了 Java 实现队列数据结构的代码详解,包括队列结构的介绍、队列实现的代码和队列的应用场景。 队列结构是一种线性结构,具有特殊的运算法则:只能在一端(队头)删除...