队列的链式存储方式的实现(Java语言描述)
链队列的结构示意图:

先进先出。
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语言描述)的更多相关文章
- C++编程练习(6)----“实现简单的队列的链式存储结构“
队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出.简称链队列. 实现代码如下: /* LinkQueue.h 头文件 */ #include<iostream> #defi ...
- 队列(FIFO)—循环队列、队列的链式存储
1 队列的定义 队列是只允许在一端(队尾)进行插入操作,而在另一端(队头)进行删除操作的线性表. 2 队列的特点 1)先进先出是队列最大的特点,是应用中非常常见的模型,例如排队: 2)队列也属于线性表 ...
- 数据结构-线性表的链式存储相关算法(C语言实现)
链表的简单介绍 为什么需要线性链表 当然是为了克服顺序表的缺点,在顺序表中,做插入和删除操作时,需要大量的移动元素,导致效率下降. 线性链表的分类 按照链接方式: 按照实现角度: 线性链表的创建和简单 ...
- 队列(链式存储)C++模板实现
#include <iostream> using namespace std; //队列结点类 template <typename T> class QueueNode{ ...
- 队列(链式存储)JAVA代码
publicclassLinkQueue<T>{ //结点类 publicclassNode{ public T data; pub ...
- C语言实现线性表(链式存储方式)
#include <stdio.h> #include <stdlib.h> //提供malloc()原型 typedef struct LNode *List; typede ...
- 队列链式存储 - 设计与实现 - API函数
队列相关基础内容参我的博文:队列顺序存储 - 设计与实现 - API函数 队列也是一种特殊的线性表:可以用线性表链式存储来模拟队列的链式存储. 主要代码: // linkqueue.h // 队列链式 ...
- 队列的顺序存储与链式存储c语言实现
一. 队列 1.队列定义:只允许在表的一端进行插入,表的另一端进行删除操作的线性表. 2.循环队列:把存储队列的顺序队列在逻辑上视为一个环. 循环队列状态: 初始时:Q.front=Q.rear=0 ...
- 数据结构算法C语言实现(十一)--- 3.4队列的链式表示和实现
一.简介 FIFO. 二.头文件 //3_4_part1.h /** author:zhaoyu email:zhaoyu1995.com@gmail.com date:2016-6-9 note:r ...
随机推荐
- [轉]redis;mongodb;memcache三者的性能比較
先说我自己用的情况: 最先用的memcache ,用于键值对关系的服务器端缓存,用于存储一些常用的不是很大,但需要快速反应的数据 然后,在另一个地方,要用到redis,然后就去研究了下redis. 一 ...
- windows7文件共享
工作组模式下: 参考:http://support.microsoft.com/kb/2533010/zh-cn 1.首先区分网络类型配置文件:家庭网络,工作网络还是公用网络 2.每种类型区分两种文件 ...
- php加密解密功能类
这两天突发奇想想要用php写一个对日常项目加密以及解密的功能,经过努力简单的封装了一个对php代码进行加密解密的类,一些思想也是来自于网络,初步测试用着还行,可以实现对指定项目的加密以及解密(只针对本 ...
- 奇怪吸引子---Rucklidge
奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性.稳定性.吸引性.吸引子是一个数学概念,描写运动的收敛类型.它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集上出 ...
- Jmeter之JDBC Request使用方法(oracle)
JDBC Request: 这个sampler可以向数据库发送一个jdbc请求(sql语句),它经常需要和JDBC Connection Configuration 配置元件一起配合使用. 目录: 一 ...
- javaweb 学习总结
http://www.cnblogs.com/xdp-gacl/category/574705.html 这个总结很好,以前看书没搞懂的,这里基本上都清楚了,赞一个,推荐. Servlet与普通Jav ...
- sqlite 的比较等运算是根据不同的值而不同的,并不是根据的字段类型,因为 sqlite 是弱类型字段
sqlite 的比较等运算是根据不同的值而不同的,并不是根据的字段类型,因为 sqlite 是弱类型字段 --------------------------------------------- ...
- 单元测试mock之mockito使用
先来一个简单的例子来感受一下 外部接口类:TestService.java package com.yzl.mock; /** * 测试用服务 * * @author yangzhilong */ p ...
- MassTransit_消费者的创建
Creating a message consumer A message consumer is a class that consumes one or more message types, s ...
- 日本超人气洛比(Robi)声控机器人
1.日本超人气洛比(Robi)声控机器人. http://technews.cn/2015/04/18/interview-with-robi-creator-tomotaka-takahashi/ ...