队列也是一种线性结构
相比数组,队列对应的操作是数组的子集 只能从一端(队尾)添加元素,只能从另一端(队首)取出元素。 队列像排队。
队列是一种先进先出的数据结构
删除是 0(n),因为删除一个元素,数组的每个位置都要向前移动一个位置。 代码实现:
思路:
1.入队,创建一个新的数组元素元素是原来数组扩容一个。把原来的元素拷贝新的数组中,把新的元素添加到队尾
2.出队,创建一个新的数组元素元素是原来数组少一个,保存第一个元素,从原始的数组第二个元素开始到新的数组中
3.判断是队是否空,判断是否为0.
public class MyQueue {
int[] elements;
public MyQueue() {
elements = new int[0];
}
//入队
public void add(int element) {
//创建一个新的数组,比原来数组长度加一。
int[] newArr = new int[elements.length + 1];
//把原来数组中的元素复制到新数组中
for (int i = 0; i < elements.length; i++) {
newArr[i] = elements[i];
}
//把添加的元素放入新数组中
newArr[elements.length] = element;
//使用新数组替换旧的数组
elements = newArr;
}
//出队
public int poll() {
//把数组中的第0个元素取出来
int element = 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 element;
}
//判断队列是否为空
public boolean isEmpty() {
return elements.length == 0;
}
}