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

  • 相关阅读:
    习题4.7利用vector实现数据复制
    习题4.18
    4.8编写一小段程序实现两vector是否相等的比较
    关于野指针
    学习c++的50条忠告
    c++头文件
    习题4.14
    容器和迭代器
    Android上C++对象的自动回收机制分析
    Windows下载Android源码
  • 原文地址:https://www.cnblogs.com/Infancy/p/12599313.html
Copyright © 2011-2022 走看看