线性结构--队列

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

创建队列类

 1 package com.feimao.com.feimao.a2.test;
 2 
 3 public class MyQueue {
 4     int[] elements;
 5     public  MyQueue(){
 6         elements = new int[0];
 7     }
 8     //入队
 9     public void add(int element){
10         //创建一个新的数组
11         int[] newArr = new int[elements.length + 1];
12         //把原数组中的元素复制到新数组
13         for(int i = 0 ; i < elements.length ; i++){
14             newArr[i] = elements[i];
15         }
16         //把添加的元素放入到新数组
17         newArr[elements.length] = element;
18         //使用新数组替换旧数组
19         elements = newArr;
20     }
21     //出队
22     public int pop(){
23         int element = elements[0];
24         int[] newArr = new int[elements.length - 1];
25         for(int i = 0 ; i < newArr.length ; i++){
26             newArr[i] = elements[i+1];
27         }
28         elements = newArr;
29         return element;
30     }
31     //判断队列是否为空
32     public boolean isEmpty(){
33         return elements.length == 0;
34     }
35 
36 }

创建队列的测试类

 1 package com.feimao.com.feimao.a2.test;
 2 
 3 public class MyQueueTest {
 4     public static void main(String[] args){
 5         MyQueue mq = new MyQueue();
 6         mq.add(1);
 7         mq.add(2);
 8         mq.add(3);
 9         System.out.println(mq.pop());
10         System.out.println(mq.isEmpty());
11     }
12 }

结果:

原文地址:https://www.cnblogs.com/feimaoyuzhubaobao/p/10165783.html