zoukankan      html  css  js  c++  java
  • 数组队列

    前言

    队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。


    具体实现

    • 接口
    public interface Queue<T> {
    
        /**
         * 添加元素
         * @param t
         */
        void enqueue(T t);
    
        /**
         * 元素出队
         * @return
         */
        T dequeue();
    
        /**
         * 获取队首元素
         * @return
         */
        T getFront();
    
        /**
         * 获取队列长度
         * @return
         */
        int getSize();
    
        /**
         * 是否为空
         * @return
         */
        boolean isEmpty();
    
    }
    
    • 实现类
    public class ArrayQueue<T> implements Queue<T> {
    
        Array<T> data;
    
        /**
         * 构造方法
         * @param capacity
         */
        public ArrayQueue(int capacity) {
            data = new Array<>(10);
        }
    
        /**
         * 构造方法
         */
        public ArrayQueue() {
            data = new Array<>();
        }
    
        /**
         * 添加元素
         * @param t
         */
        @Override
        public void enqueue(T t) {
            data.addLast(t);
        }
    
        /**
         * 元素出队
         * @return
         */
        @Override
        public T dequeue() {
            return data.removeFirst();
        }
    
        /**
         * 获取队首元素
         * @return
         */
        @Override
        public T getFront() {
            return data.getFirst();
        }
    
        /**
         * 获取队列长度
         * @return
         */
        @Override
        public int getSize() {
            return data.getSize();
        }
    
        /**
         * 是否为空
         * @return
         */
        @Override
        public boolean isEmpty() {
            return false;
        }
    
        /**
         * 获取队列容量
         * @return
         */
        public int getCapacity() {
            return data.getCapacity();
        }
    
        /**
         * 重写toString方法
         * @return
         */
        @Override
        public String toString() {
            StringBuilder resp = new StringBuilder();
            resp.append("Queue: front [");
            for (int i = 0; i < data.getSize(); i ++) {
                resp.append(data.get(i));
    
                if (i != data.getSize() - 1) {
                    resp.append(",");
                }
    
            }
    
            resp.append("] tail");
    
            return resp.toString();
        }
    
        public static void main(String[] args) {
            ArrayQueue<Integer> arrayQueue = new ArrayQueue<>();
            for (int i = 0; i < 10; i++) {
                arrayQueue.enqueue(i);
                System.out.println(arrayQueue);
    
                if (i % 3 == 2) {
                    arrayQueue.dequeue();
                    System.out.println(arrayQueue);
                }
            }
        }
    
    }
    
    - End -
    一个努力中的公众号
    关注一下吧
    以上为本篇文章的主要内容,希望大家多提意见,如果喜欢记得点个推荐哦
    作者:95.8℃
    本文版权归作者和博客园共有,欢迎转载,转载时保留原作者和文章地址即可。
  • 相关阅读:
    《哈佛大学公开课:公正该如何做是好?》学习笔记3
    iPhone客户端开发笔记(三)
    iPhone客户端开发笔记(一)
    今天讨论了下本地化服务信息应用
    云游第一天感受
    昨晚调试一段PHP程序时遇到的三个问题
    iPhone客户端开发笔记(四)
    《哈佛大学公开课:公正该如何做是好?》学习笔记2
    Oracle10g数据库归档与非归档模式下的备份与恢复
    javascript 实现页面间传值
  • 原文地址:https://www.cnblogs.com/maggieq8324/p/14878486.html
Copyright © 2011-2022 走看看