Queue的实现

Queue的实现

  队列是一种常用的先进先出结构,就像排队购票,本文实现—初始化队列为null,当第一个元素入队,队头和队尾重叠,以后入队则将队尾向后推,出队则将队头向后推,也可以采用循环队列实现,可以有效利用空间。

功能描述

  入队enqueue和出队dequeue。

代码实现

package com.yam.base;

/**
 * 队列实现(使用链表实现)
 * @author: Ympery
 * @date: 2017/3/15 14:15.
 */
public class MyQueue<AnyType> {
    
    

    private Node first; // 队头
    private Node last; // 队尾
    private int theSize; // 队列大小

    /*public MyQueue() {
        theSize = 0;
        last = new Node(null, null);
        first = last;
    }*/

    /**
     * 队列中的节点
     */
    private class Node {
    
    
        public Node(Node n, AnyType d) {
            next = n;
            data = d;
        }
        Node next;
        AnyType data;
    }

    public int size() { return theSize; }
    // 也可以使用null == first
    public boolean isEmpty() { return 0 == theSize; }

    /**
     * 入队
     * @param data
     */
    public void enqueue(AnyType data) {
        Node oldLast = last;
        last = new Node(null, data);
        if (isEmpty())  first = last;
        else    oldLast.next = last;
        theSize++;
    }

    /**
     * 出队
     * @return
     */
    public AnyType dequeue() {
        AnyType value = first.data;
        first = first.next;
        if (isEmpty())  last = null;
        theSize--;
        return value;
    }

    /**
     * 测试
     * @param args
     */
    public static void main(String[] args) {

        char c = 'a';
        MyQueue<Character> queue = new MyQueue<>();

        for (int i = 0; i < 15; i++)
            queue.enqueue(c++);

        System.out.println("当前大小:" + queue.size());

        for (;!queue.isEmpty();)
            System.out.print(queue.dequeue() + " ");

        System.out.println("\n当前大小:" + queue.size());
    }
}

猜你喜欢

转载自blog.csdn.net/wizard_rp/article/details/70942971