zoukankan      html  css  js  c++  java
  • 数据结构(四):队列

    一、概述

    • 队列(Queue):遵循FIFO(First In First Out 先进先出)原则

    • 队列只允许在一端进行插入操作,而在另一端进行删除操作。允许插入的端是队列尾,允许删除的是队列头

    二、结构示意图

    • 向一个空队列中一次插入a、b、c三个元素

    • 将队列中的元素一个个删除

     

    三、代码示例

    • LinkedList就实现了Queue接口,我们这里以LinkedList为例

    • @Test
          public void test4(){
              LinkedList<Integer> queue = new LinkedList<Integer>();
              queue.add(1);
              queue.add(2);
              queue.add(3);
              System.out.println(queue.peek());
              queue.pop();
              System.out.println(queue.peek());
              queue.pop();
              System.out.println(queue.peek());
              queue.pop();
          }
    • 代码运行效果如下:

    • 上述代码我们可以发现,队列是先进先出

    四、自己动手实现一个简单的队列

    package com.zhurouwangzi.entity;
    ​
    public class MyQueue {
        public MyQueue(){
            element = new int[20];
            size = 0;
        }
        private int[] element;
        private int size;
    ​
        public int push(int item){
            element[size] = item;
            size++;
            return item;
        }
    ​
        public int pop(){
            int popData = element[0];
            int[] newEle = new int[size-1];
            System.arraycopy(element, 1, newEle, 0, size-1);
            element = newEle;
            size--;
            return popData;
        }
    ​
        public int peek(){
            return element[0];
        }
    ​
        public int getSize(){
            return size;
        }
    }
    • 测试自己写的简单队列

    @Test
        public void test4(){
            MyQueue myQueue = new MyQueue();
            myQueue.push(1);
            myQueue.push(2);
            myQueue.push(3);
            System.out.println(myQueue.peek());
            myQueue.pop();
            System.out.println(myQueue.peek());
            myQueue.pop();
            System.out.println(myQueue.peek());
            myQueue.pop();
        }
    • 运行效果如下:

      • 运行可以看出来和上边java官方提供的队列函数是一样的效果

    转载请注明出处:https://www.cnblogs.com/Infancy/p/12599313.html

  • 相关阅读:
    Qt Quick实现的涂鸦程序
    Java并发学习之十九——线程同步工具之Phaser
    poj 1845(等比数列前n项和及高速幂)
    装饰模式(旧恋)
    cocos2d-x 3.1.1 学习笔记[3]Action 动作
    Nmap 源代码学习四 软件简单使用
    关于phpcmsv9更新缓存出现链接被重置的问题
    POJ 3159 Candies(SPFA+栈)差分约束
    Ubuntu 配置ISCSI服务
    iSCSI存储技术
  • 原文地址:https://www.cnblogs.com/Infancy/p/12599313.html
Copyright © 2011-2022 走看看