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℃
    本文版权归作者和博客园共有,欢迎转载,转载时保留原作者和文章地址即可。
  • 相关阅读:
    linux Chrome 安装
    jQuery.extend 函数详解
    Ubuntu Linux 下文件名乱码(无效的编码)的快速解决办法
    Django——model字段类型 2
    Django 中的用户认证
    Expression<Func<T, bool>>与Func<T, bool>的区别
    根据funID,personID获取最新规划包项目相关信息
    SET ANSI_NULLS ON 在T-SQL中是什么意思
    SQL Server 2008中如何为XML字段建立索引
    PowerDesigner 建模后如何导入到数据库
  • 原文地址:https://www.cnblogs.com/maggieq8324/p/14878486.html
Copyright © 2011-2022 走看看