队列的特点和栈相反,先进先出,同样用数组实现队列。
队列插入
1、创建一个新的数组,大小比原来的数组长度大一。
2、把原来的数组的值赋值到新数组
3、新数组插入最新元素
4、新数组赋值给原数组
public class MyQuene { int[] elements; public void push(int value) { int[] newArr = new int[elements.length + 1]; for (int i = 0; i < elements.length; i++) { newArr[i] = elements[i]; } newArr[elements.length] = value; elements = newArr; } }
出队列 先进先出
1、创建一个新的数组,大小比原来的数组长度小一。
2、给新数组赋值,把原数组下标加1赋值到新数组。
3、新数组赋值给原数组
代码
public class MyQuene { int[] elements; // 出队列 先进先出 public int pop() { int result = elements[0]; int[] newArr = new int[elements.length - 1]; for (int i = 0; i < newArr.length; i++) { newArr[i] = elements[i + 1]; } elements = newArr; return result; } }
自定义队列
public class MyQuene { int[] elements; public MyQuene() { elements = new int[0]; } public void push(int value) { int[] newArr = new int[elements.length + 1]; for (int i = 0; i < elements.length; i++) { newArr[i] = elements[i]; } newArr[elements.length] = value; elements = newArr; } // 出队列 先进先出 public int pop() { int result = elements[0]; int[] newArr = new int[elements.length - 1]; for (int i = 0; i < newArr.length; i++) { newArr[i] = elements[i + 1]; } elements = newArr; return result; } public int size() { return elements.length; } public int peel() { return elements[0]; } public void clear() { elements = new int[0]; } public void show() { System.out.println(Arrays.toString(elements)); } public boolean isEmpty() { return elements.length == 0; } }