链队列的结构示意图:

先进先出。

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. centos7开启3306端口,liunx查看防火墙是否开启

    Can't connect to MySQL server on localhost (10061)这个就属于下面要说的情况 启动服务 systemctl start mariadb.service ...

  2. 将redis作为windows系统的系统服务

    在windows系统,每次打开redis服务都是一个dos窗口一直开着,很不爽,这里我用winsw工具把redis作为系统服务启动 我把自动启动的所有内容都整理好了,请自行下载 下载地址:http:/ ...

  3. WPF 触发器

    属性触发器:数据触发器:事件触发器

  4. python数据结构之栈、队列的实现

    这个在官网中list支持,有实现. 补充一下栈,队列的特性: 1.栈(stacks)是一种只能通过访问其一端来实现数据存储与检索的线性数据结构,具有后进先出(last in first out,LIF ...

  5. 通过Typings为Visual Studio Code增强智能提示功能

    缘起 最近在学习Node.js及ThinkJS这个框架,用vscode作为开发环境.默认情况下vscode对ThinkJS的代码提示并不好,所以研究了一下,原来可以同通过Typings来让vscode ...

  6. Android 5.0 Default SMS App以及运营商授权SMS App

    已同步更新至个人blog:http://dxjia.cn/2015/08/android-5-default-sms-app/ 题外话:博友们有没有好用的写博客客户端推荐啊,cnblogs推荐的win ...

  7. 转:windows下多线程通信方法

    多线程知识简介 同一进程中可以包含多个线程,由于进程中的多个线程可以共享进程中的资源,所以使同一进程中的多个线程之间通信相对比较简单. 当需要有多个线程来访问一个全局变量时,通常我们会在这个全局变量前 ...

  8. 面向.Net程序员的dump分析

    背景 Dump文件是进程的内存镜像.可以把程序的执行状态通过调试器保存到dump文件中.在 Windows 系统上, dump 文件分为内核 dump 和用户态 dump 两种.前者一般用来分析内核相 ...

  9. X509证书中RSA公钥的提取与载入

    原文链接: http://blog.chinaunix.net/uid-16515626-id-2741894.html   由于项目需要,我计划利用openssl开发一个基本的CA,实现证书的发放等 ...

  10. 像table一样布局div

    原文:http://www.456bereastreet.com/archive/200405/equal_height_boxes_with_css/ 下面是我翻译的内容,是根据我对文章的理解意译的 ...