链队列的结构示意图:

先进先出。

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. 部分设备在微信内无法播放audio的解决方案

    临时接到一个紧急的需求,一个活动页面,在某台iPhone 5S设备上无法播放音频,其它设备均正常.我接到这个任务时,也是一脸懵逼,试过在audio标签上添加controls属性来显示audio,结果发 ...

  2. 致第一次安装RIME的你

    转载自百度RIME吧,作者:半月湾C 原帖地址:http://tieba.baidu.com/p/3288634121   序言 很喜欢小狼毫输入法,喜欢他的简洁,美观以及超强悍的个人定制功能.关于 ...

  3. fidder 抓 https包配置方法(ios & android & pc浏览器)

    1. fidder抓https包的基本配置,可参见以下博文 http://blog.csdn.net/idlear/article/details/50999490 2. 遇到问题:抓包看只有Tunn ...

  4. 高大上技术之sql解析

    Question: 为何sql解析和高大上有关系?Answer:因为数据库永远都是系统的核心,CRUD如此深入码农的内心...如果能把CRUD改造成高大上技术,如此不是造福嘛... CRUD就是Cre ...

  5. Core Java - 流(Stream) - 字节流和字符流(一)

    0. 概述: Java中基于流的I/O构建在4个抽象类之上, 其中2个是字节流,另外2个是字符流. 字节流: InputStream / OutputStream 当操作字节或其它二进制对象时,应当使 ...

  6. Android开发(三十一)——重复引用包错误Conversion to Dalvik format failed

    错误:Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Landroid/sup ...

  7. C#-DataTable分页代码

    /// <summary> /// DataTable分页并取出指定页码的数据 /// </summary> /// <param name="dtAll&qu ...

  8. Navi.Soft30.框架.WinForm.开发手册

    阅读导航 Navi.Soft30.Core类库.开发手册 http://www.cnblogs.com/xiyang1011/p/5709489.html Navi.Soft30.框架.WinForm ...

  9. 火狐 SSL 收到了一个弱临时 Diffie-Hellman 密钥的解决办法

    连接 https网址 时发生错误. 在服务器密钥交换握手信息中 SSL 收到了一个弱临时 Diffie-Hellman 密钥. (错误码: ssl_error_weak_server_ephemera ...

  10. WWDC2016-session402-whatsNewInSwift3

    Dock 应用的介绍:1.设计到的东西多2.使用 swift 设计3.Dock 的代码量: 200,000行4.更少的重写相同功能的代码 swift.org 官网介绍 Swift Open Sourc ...