队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(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 }
结果: