java 数据结构 队列的实现

java 数据结构队列的代码实现,可以简单的进行入队列和出队列的操作

/**
 * java数据结构之队列的实现
 * 2016/4/27
 **/
package cn.Link;
import java.util.*;

public class Queue{
    Node tail = new Node();
    Node nowNode = new Node();   //永远指向队首
    int size;
    Queue(){};
    Queue(String date){
        this.tail.date = date;
        this.tail.next = null;
        this.nowNode.next = this.tail;
        this.size = 1;
        System.out.println("队列已经被建立,"+date+"被加入到队列中");
    }

    //节点类
    class Node{
        String date;
        Node next;
        Node(){};
        Node(String date){
            this.date = date;
        }
    }

    //向队列中插入数据
    public void EnQueue(String date){
        Node preNode = new Node(date);
        preNode.next = this.nowNode.next;
       this.nowNode.next = preNode;
       this.size++;
       System.out.println("数据"+date+"被加入到队列中");
    }

    //出队列操作
    public void DeQueue(){
        Node preNode = new Node();
        preNode.next = this.nowNode.next;
        while(true){
            if(preNode.next.next != this.tail){
                preNode.next = preNode.next.next;
            }else{
                preNode.next.next = null;
                this.tail = preNode.next;
                System.out.println("出队列完成~~~"); break;
            }
        }
        this.size--;
    }

    //遍历队列输出
    public void PrintQueue(){
        Node preNode = new Node();
        preNode.next = this.nowNode.next;
        System.out.print("遍历输出队列: ");
        while(preNode.next != null){
            System.out.print(" -->"+preNode.next.date);
            preNode.next = preNode.next.next;
        }
        System.out.println("+++++++++++当前队列的长度为"+this.size);
    }

    //清空队列
    public void clear(){
        this.nowNode.next = null;
        this.tail = null;
        this.size = 0;
        System.out.println("队列已被清空");

    }

    public static void main(String[] args){
        Queue queue = new Queue("sum1");
         queue.EnQueue("sum2");
         queue.EnQueue("sum3");
         queue.EnQueue("sum4");
         queue.EnQueue("sum5");
         queue.EnQueue("sum6");
         queue.EnQueue("sum7");
         queue.EnQueue("sum8");
         queue.PrintQueue();
         queue.DeQueue();
         queue.DeQueue();
         queue.PrintQueue();
    }
}
时间: 2024-10-13 13:17:06

java 数据结构 队列的实现的相关文章

java数据结构队列

队列类似于现实生活中的排队.队列是先进先出的原则,只允许在队列头部去除元素,队列尾部添加元素. 下面是分别用数组和链表为存储结构实现的队列 public interface Queue<T> { int size(); T remove(); void add(T element); boolean isEmpty(); void clear(); boolean hasElement(); } public class ArrayQueue<T> implements Queue

Java数据结构和算法之栈与队列

二.栈与队列 1.栈的定义 栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表. (1)通常称插入.删除的这一端为栈顶(Top),另一端称为栈底(Bottom). (2)当表中没有元素时称为空栈. (3)栈为后进先出(Last In First Out)的线性表,简称为LIFO表. 栈的修改是按后进先出的原则进行. 每次删除(退栈)的总是当前栈中"最新"的元素,即最后插入(进栈)的元素,而最先插入的是被放在栈的底部,要到最后才能删除. 图1 [示例]元素是以a1,a2,-,a

Java数据结构之队列的实现以及队列的应用之----简单生产者消费者应用

Java数据结构之---Queue队列 队列(简称作队,Queue)也是一种特殊的线性表,队列的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置插入和删除,而队列只允许在其一端进行插入操作在其另一端进行删除操作. 队列中允许进行插入操作的一端称为队尾,允许进行删除操作的一端称为队头.队列的插入操作通常称作入队列,队列的删除操作通常称作出队列.最简单的例子就是我们平时的排队,先进先出. 顺序队列的存储结构 下图是一个有6个存储空间的顺序队列的动态示意图,图中front

java数据结构与算法之(Queue)队列设计与实现

[版权申明]转载请注明出处(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/53375004 出自[zejian的博客] 关联文章: java数据结构与算法之顺序表与链表设计与实现分析 java数据结构与算法之双链表设计与实现 java数据结构与算法之改良顺序表与双链表类似ArrayList和LinkedList(带Iterator迭代器与fast-fail机制) java数据结构与算法之栈设计与实现 java数据结构

Java数据结构之何为队列

没有java数据结构的基础,如何优化Android应用的性能?在实际生活中,队列有着广泛的应用,例如排队购物,文章打印,都遵循着队列先进先出的原则.队列queue在我们Handel looper thread那章中我们讲解过,今天我们重点解析下Queue的性质. 队列(Queue)也是一种运算受限的线性表.它只允许在表的一端进行插入,而在另一端进行删除.允许删除的一端称为队头(front),允许插入的一端称为队尾(rear). 顺序  queue的相关概念 ?进行插入操作的端称为队尾,进行删除操

Java数据结构与算法之集合

线性表.链表.哈希表是常用的数据结构,在进行Java开发时,SDK已经为我们提供了一系列相应的类来实现基本的数据结构.这些类均在java.util包中. 一.Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object.一些Collection允许相同元素而另一些不行.一些能排序而另一些不行.Java  SDK不提供直接继承自Collection的类,Java  SDK提供的类都是继承自Collection的"子接口"如List和Set

Java数据结构和算法之链表

三.链表 链结点 在链表中,每个数据项都被包含在'点"中,一个点是某个类的对象,这个类可认叫做LINK.因为一个链表中有许多类似的链结点,所以有必要用一个不同于链表的类来表达链结点.每个LINK对象中都包含一个对下一个点引用的字段(通常叫做next)但是本身的对象中有一个字段指向对第一个链结点的引用. 单链表 用一组地址任意的存储单元存放线性表中的数据元素. 以元素(数据元素的映象)  + 指针(指示后继元素存储位置)  = 结点(表示数据元素 或 数据元素的映象) 以"结点的序列&q

挨踢部落坐诊第四期:Java消息队列的应用场景和作用

挨踢部落是为核心开发者提供深度技术交流,解决开发需求,资源共享的服务社群.基于此社群,我们邀请了业界技术大咖对开发需求进行一对一突破,解除开发过程中的绊脚石.以最专业.最高效的答复为开发者解决开发难题. 消息队列 话题关键词:消息队列.索引.App.路由.接口 部落阵容:51CTO管理团队: 面向对象:移动开发者.IT运维.数据分析师 参与方式:加入51CTO开发者QQ交流群(群号370892523(已满).请加312724475),有任何技术问题,在群里提问,或发给群主小官. 活动详情: 重庆

java数据结构与算法之顺序表与链表深入分析

转载请注明出处(万分感谢!): http://blog.csdn.net/javazejian/article/details/52953190 出自[zejian的博客] 关联文章: java数据结构与算法之顺序表与链表设计与实现分析 java数据结构与算法之双链表设计与实现 ??数据结构与算法这门学科虽然在大学期间就已学习过了,但是到现在确实也忘了不少,因此最近又重新看了本书-<数据结构与算法分析>加上之前看的<java数据结构>也算是对数据结构的进一步深入学习了,于是也就打算