链队列的结构示意图:

先进先出。

QueueInterface.java//操作方法接口

package 队列的实现;

public interface QueueInterface {
public void enQueue(Object t);
public Object delQueue();
public int size();
public boolean isEmpty();
public Object head();
public void clear(); }

Node.java//节点类

package 队列的实现;

public class Node<T> {
T data;
Node next;
}

Queue.java//队列的定义和接口实现

package 队列的实现;

public class Queue<T> implements QueueInterface{
Node<T> front,rear;//对头指针,队尾指针
//构造一个空的链队列
public Queue(){
front = new Node<T>();
rear = new Node<T>();
rear = front;
}
//实现接口里的操作
public boolean isEmpty(){
if(front == rear)
return true;
else
return false;
}
public int size(){
int i = 0;
Node<T> p = front.next;
while(p != null){
p = p.next;
i++;
}
return i;
}
public Object head(){
if(this.isEmpty() == false)
return front.next.data;
System.out.println("队列为空,不存在队头元素!");
return 0;
}
public void enQueue(Object obj){
Node<T> p = new Node<T>();
p.data = (T)obj;
rear.next = p;
p.next = null;
rear = p;
}
public Object delQueue(){
T t;
Node<T> p = new Node<T>();
if(this.isEmpty() == true){
System.out.println("队列为空,不能进行删除操作!");
return 0;
}
else{
p = front.next;
front.next = p.next;
if(p.next == null)//出队后队列为空
rear = front;
t = p.data;
p = null;
return t;
}
}
public void clear(){
front = rear;
} }

TestQueue.java//测试类

package 队列的实现;

public class TestQueue {

	public static void main(String[] args) {
Queue<Integer> queue = new Queue<Integer>();
for(int i=1; i<=10; i++){
queue.enQueue(i);
}
System.out.println(queue.size());
System.out.println(queue.isEmpty());
for(int i=1; i<=10; i++){
System.out.print(queue.delQueue() + " ");
}
System.out.println();
System.out.println(queue.isEmpty());
for(int i=1; i<=10; i++){
queue.enQueue(i);
}
System.out.println(queue.isEmpty());
queue.clear();
System.out.println(queue.isEmpty()); } }

实现结果:

10

false

1 2 3 4 5 6 7 8 9 10

true

false

true

队列的链式存储方式的实现(Java语言描述)的更多相关文章

  1. C++编程练习(6)----“实现简单的队列的链式存储结构“

    队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出.简称链队列. 实现代码如下: /* LinkQueue.h 头文件 */ #include<iostream> #defi ...

  2. 队列(FIFO)—循环队列、队列的链式存储

    1 队列的定义 队列是只允许在一端(队尾)进行插入操作,而在另一端(队头)进行删除操作的线性表. 2 队列的特点 1)先进先出是队列最大的特点,是应用中非常常见的模型,例如排队: 2)队列也属于线性表 ...

  3. 数据结构-线性表的链式存储相关算法(C语言实现)

    链表的简单介绍 为什么需要线性链表 当然是为了克服顺序表的缺点,在顺序表中,做插入和删除操作时,需要大量的移动元素,导致效率下降. 线性链表的分类 按照链接方式: 按照实现角度: 线性链表的创建和简单 ...

  4. 队列(链式存储)C++模板实现

    #include <iostream> using namespace std; //队列结点类 template <typename T> class QueueNode{ ...

  5. 队列(链式存储)JAVA代码

      publicclassLinkQueue<T>{       //结点类     publicclassNode{         public T data;         pub ...

  6. C语言实现线性表(链式存储方式)

    #include <stdio.h> #include <stdlib.h> //提供malloc()原型 typedef struct LNode *List; typede ...

  7. 队列链式存储 - 设计与实现 - API函数

    队列相关基础内容参我的博文:队列顺序存储 - 设计与实现 - API函数 队列也是一种特殊的线性表:可以用线性表链式存储来模拟队列的链式存储. 主要代码: // linkqueue.h // 队列链式 ...

  8. 队列的顺序存储与链式存储c语言实现

    一. 队列 1.队列定义:只允许在表的一端进行插入,表的另一端进行删除操作的线性表. 2.循环队列:把存储队列的顺序队列在逻辑上视为一个环. 循环队列状态: 初始时:Q.front=Q.rear=0 ...

  9. 数据结构算法C语言实现(十一)--- 3.4队列的链式表示和实现

    一.简介 FIFO. 二.头文件 //3_4_part1.h /** author:zhaoyu email:zhaoyu1995.com@gmail.com date:2016-6-9 note:r ...

随机推荐

  1. Gabor学习笔记

    本文根据博客http://blog.csdn.net/watkinsong/article/details/7870996 ,博客http://www.cnblogs.com/yingying0907 ...

  2. ubuntu 16.04 tmux

    旧的鼠标选项 setw -g mode-mouse on set-option -g mouse-resize-pane on set-option -g mouse-select-pane on s ...

  3. TaskHosting - 开发桌面工具原来还可以这么简单

    由来 对于喜欢开发的我经常会写一些小工具,这些小工具多以功能为主,不要求漂亮.个性化的UI.但起码要保证使用方便,因此最基本的功能要有: GUI(图片用户界面) 程序配置的保存与读取(让用户在GUI上 ...

  4. String和包装类Integer\Double\Long\Float\Character 都是final类型

    String和包装类Integer\Double\Long\Float\Character\Boolean 都是final类型 不可以改变

  5. mysql 关键字 字段 转义

    insert into tb_gps(imei,lat,lon,speed,dir,alt,atom,`signal`,batt,intime) values('46345435435345','22 ...

  6. RabbitMQ学习笔记3-使用topic交换器

    topic的路由规则里使用[.]号分隔单词,使用[*]号匹配1个单词,使用[#]匹配多个.和多个*. 在下面的例子中: logger.*可以匹配logger.error和logger.warning, ...

  7. Asp.net Core中使用NLog,并封装成公共的日志方法

    1.安装NLog "NLog.Extensions.Logging": "1.0.0-rtm-alpha4" 2.配置NLog public void Conf ...

  8. 文件上传限制大小 dotnet/C#

    private void Button1_Click(object sender, System.EventArgs e) { if (File1.PostedFile != null) { //上传 ...

  9. gitignore for vs

    */**/bin/Debug*/**/bin/Release*/**/obj/Debug*/**/obj/Release*/**/x86/Debug*/**/x86/Release*/**/x64/D ...

  10. Rhino -- 基于java的javascript实现

    http://www.cnblogs.com/cczw/archive/2012/07/16/2593957.html