美文网首页
七、Java数据结构-队列(Queue)

七、Java数据结构-队列(Queue)

作者: daley_磊 | 来源:发表于2021-04-03 07:44 被阅读0次

什么是队列

队列是一种基于先进先出(FIFO)的数据结构,是一种只能在一端进行插入,在另一端进行删除操作的特殊线性表,它按照先进先出的原则存储数据,先进入的数据,在读取数据时先读被读出来;


代码实现(通过双向链表来实现)

类名 MyQueue
成员方法 1.public void clear():清空队列
2.public boolean isEmpty():判断队列是否为空,是返回true,否返回false
3.public int size():获取队列中元素的个数
4.public T get():从队列中取出一个元素
5.public void push(T t):向队列中插入元素t
成员变量 1.private Node head :记录首结点
2.private int N:记录栈的元素个数
3.private Node last:记录最后一个结点

public class MyQueue<T> implements Iterable<T>{

    //记录头结点
    private Node head;
    // 记录最后一个结点
    private Node last;
    //记录链表的长度
    private int N;

    public MyQueue(){
        this.head = new Node(null,null);
        this.last = null;
        this.N = 0;
    }




    /**
     *  定义节点类
     */
    public   class Node{
        T item ;   //存储数据
        Node next;  //下一个节点
        public Node(T item, Node next) {
            this.item = item;
            this.next = next;
        }
    }



    public void clear(){
        this.head = null;
        this.N = 0;
    }
    public boolean isEmpty(){
        return this.N == 0;
    }
    public int size(){
        return this.N;
    }

    public T get(){
        if(isEmpty()){
            System.out.println("没有数据了");
            return null;
        }
        Node n = this.head.next;
        this.head.next = n.next;
        N --;
        if(isEmpty()){
            this.head.next=null;
            this.last = null;
        }
        return n.item;
    }


    public void push(T t){
        if(this.head.next == null){
            last = new Node(t, null);
            head.next = last;
        }else {
            Node oldlast = last;
            last = new Node(t,null);
            oldlast.next = last;
        }
        N ++;
    }
    @Override
    public Iterator<T> iterator() {
        return new MyIterator();
    }
    private  class MyIterator implements Iterator<T>{
        Node n = head;
        @Override
        public boolean hasNext() {
            return n.next!=null;
        }

        @Override
        public T next() {
            n = n.next;
            return n.item;
        }
    }
}

相关文章

  • Java中的队列Queue总结

    标签(空格分隔): 数据结构 Java进阶 Java中的队列Queue 我们都知道队列(Queue)是一种先进先出...

  • Handler精讲

    讲解本技术点之前需要准备的技术点回顾 队列数据结构 数据结构-队列(queue) - CSDN博客 Java中的T...

  • Java数据类型

    Java数据结构中常用的数据结构包含如下8种: 1:数组(Array) 2:栈(Stack) 3:队列(Queue...

  • 七、Java数据结构-队列(Queue)

    什么是队列 队列是一种基于先进先出(FIFO)的数据结构,是一种只能在一端进行插入,在另一端进行删除操作的特殊线性...

  • Java 多线程、Queue学习,CAS学习

    主题一:Queue: Java并发(10)- 简单聊聊JDK中的七大阻塞队列解读 Java 并发队列 Blocki...

  • JAVA基础——Queue集合

    Queue集合 Queue用于模拟队列这种数据结构,队列FIFO的容器。队列的头部保存在队列中存放时间最长的元素,...

  • 数据结构-队列(Queue)-FIFO

    数据结构-队列(Queue)-FIFO 队列的接口设计 双端队列-Deque 循环队列-CircleQueue 双...

  • Queue Java 源码

    Queue 队列 队列是一个重要的数据结构,是一种特殊的线性表,特性是先进先出(FIFO)。Java中的队列是一个...

  • Java 中 Queue 接口学习

    Queue 是 java中的一个接口,在java.util包下面,意在实现数据结构中的队列,主要包含以下几种接口方...

  • java - 数据结构 队列queue

    1. 定义 队列(Queue),是一种线性存储结构。它有以下几个特点: 先进先出 头删尾插 队列通常包括的两种操作...

网友评论

      本文标题:七、Java数据结构-队列(Queue)

      本文链接:https://www.haomeiwen.com/subject/vtuxkltx.html