zoukankan      html  css  js  c++  java
  • 循环队列顺序存储Java实现

    package com.wrh.lab.dataStructure.stackAndQueue;

    /**
    * the interface of queue
    *
    @author wrh
    *
    *
    @param <E>
    */
    public interface Queue<E> {

    /**
    * enqueue the element
    *
    @param element
    */
    public void enqueue(E element);

    /**
    *
    *
    @return the dequeue element
    */
    public E dequeue();

    /**
    * get the first element of the queue
    *
    @return the first element of the queue
    */
    public E getFirstVal();

    /**
    *
    *
    @return true for empty and false for not empty
    */
    public boolean isEmpty();

    /**
    * clear the queue
    */
    public void clear();
    }
    package com.wrh.lab.dataStructure.stackAndQueue;

    public class QueueNode<E> {

    private E element;
    private QueueNode<E> next;

    /**
    *
    */
    public QueueNode() {
    element = null;
    next = null;
    }

    public QueueNode(E element, QueueNode<E> next) {
    this.element = element;
    this.next = next;
    }

    public E getElement() {
    return element;
    }

    /**
    *
    @param element
    */
    public void setElement(E element) {
    this.element = element;
    }

    public QueueNode<E> getNext() {
    return next;
    }

    public void setNext(QueueNode<E> next) {
    this.next = next;
    }
    }
    package com.wrh.lab.dataStructure.stackAndQueueImpl;
    /**
    *
    @author wrh
    * the implement of the circular sequence queue
    */
    import com.trs.lab.dataStructure.stackAndQueue.Queue;

    public class CircularSeqQueueImpl<E> implements Queue<E> {
    private static final int defaultSize = 10;
    private int size;
    private int front;
    private int rear;
    private E[] listArray;

    public CircularSeqQueueImpl() {
    size = defaultSize + 1;
    front = rear = 0;
    listArray = (E[]) new Object[size];
    }

    public CircularSeqQueueImpl(int size) {
    this.size = size + 1;
    front = rear = 0;
    listArray = (E[]) new Object[size];
    }

    @Override
    public void enqueue(E element) {
    if (((rear + 1 ) % size) == front) {
    System.out.println("the queue is full");
    } else {
    rear = (rear + 1) % size;
    listArray[rear] = element;
    }
    }

    @Override
    public E dequeue() {
    if (isEmpty()) {
    System.out.println("the queue is empty!");
    return null;
    } else {
    front = (front + 1) % size;
    return listArray[front];
    }
    }

    @Override
    public E getFirstVal() {
    if (isEmpty()) {
    System.out.println("the queue is empty");
    return null;
    } else {
    return listArray[(front + 1) % size];
    }
    }

    @Override
    public boolean isEmpty() {
    return front == rear;
    }

    @Override
    public void clear() {
    front = rear = 0;
    }

    public static void main(String[] args) {
    Queue<Integer> q = new CircularSeqQueueImpl<Integer>(8);
    q.enqueue(1);
    q.enqueue(2);
    q.enqueue(3);
    q.enqueue(4);
    q.enqueue(4);
    q.enqueue(4);
    q.enqueue(4);
    System.out.println(q.dequeue());
    System.out.println(q.dequeue());
    System.out.println(q.dequeue());
    System.out.println(q.dequeue());
    }

    }




  • 相关阅读:
    吴裕雄--天生自然 R语言开发学习:模块包的安装命令
    玩转大数据系列之一:数据采集与同步
    阿里云弹性容器实例产品 ECI ——云原生时代的基础设施
    阿里云宣布进入 Serverless 容器时代,推出弹性容器实例服务 ECI
    阿里云宣布 Serverless 容器服务 弹性容器实例 ECI 正式商业化
    云HBase备份恢复,为云HBase数据安全保驾护航
    阿里云图数据库GraphDB上线,助力图数据处理
    免费带你体验阿里巴巴旗舰大数据计算产品MaxCompute
    如何快速打造一款高清又极速的短视频APP?
    视频云肖长杰:视频AI科技助力短视频生态
  • 原文地址:https://www.cnblogs.com/wrh526/p/2354610.html
Copyright © 2011-2022 走看看