数据结构(四):队列

一、概述

  • 队列(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

posted on 2020-03-30 16:21  猪肉王子-17  阅读(299)  评论(0编辑  收藏  举报

导航