1.队列
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,
和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
2.队列的模型

3.基本算法
1.获取有效长度
2.是否为空
3.进队
4.出队
5.获得对头
6.清除队
7.重写toString方法
4.实现方法
一,顺序队列

使用列表实现顺序队列。
-
获取有效长度
队列的存的有效长度。
-
是否为空
有效长度是否为0。
-
进队
在数组的尾部进入元素。
-
出队
在数组的头部删除元素,后面的元素向前移动。
-
获得对头
获取列表头部的元素。
-
清除队
将列表的有效长度置为0。
-
重写toString方法
重新拼接字符串,打印输出。
代码:
package p01.动态数组;
public class ArrayQueue<E> implements Queue<E> {
private ArrayList<E> list;
public ArrayQueue() {
this(10);
}
public ArrayQueue(int capacity){
list=new ArrayList<>(capacity);
}
@Override
public int getSize() { //获取有效长度
return list.getSize();
}
@Override
public boolean isEmpty() { //判断是否为空
return list.isEmpty();
}
@Override
public void enqueue(E e) { //进队
list.addLast(e);
}
@Override
public E dequeue() { //出队
return list.removeFirst();
}
@Override
public E getFront() { //获取对头
return list.getFirst();
}
@Override
public E getRear() { //获取队尾
return list.getLast();
}
@Override
public void clear() { //清除队列
list.clear();
}
@Override
public String toString() { //重写toString方法
if(isEmpty()){
return "[]";
}
StringBuilder sb=new StringBuilder("[");
for(int i=0;i<list.getSize();i++){
if(i==list.getSize()-1){
sb.append(list.get(i)+"]");
}else{
sb.append(list.get(i)+",");
}
}
return sb.toString();
}
}
二,链表队列

使用链表列表实现。
-
获取有效长度
队列的存的有效长度。
-
是否为空
有效长度是否为0。
-
进队
在列表的尾部进入元素。
-
出队
在列表的头部删除元素,后面的元素向前移动。
-
获得对头
获取列表头部的元素。
-
清除队
将列表的有效长度置为0。
-
重写toString方法
重新拼接字符串,打印输出。
代码:
package p02.动态链表;
import p01.动态数组.Queue;
public class LinkedQueue<E> implements Queue<E> {
private LinkedList<E> list;
public LinkedQueue() {
list=new LinkedList<>();
}
@Override
public int getSize() { //获取有效长度
return list.getSize();
}
@Override
public boolean isEmpty() { //是否为空
return list.isEmpty();
}
@Override
public void enqueue(E e) { //进队
list.addLast(e);
}
@Override
public E dequeue() { //出队
return list.removeFirst();
}
@Override
public E getFront() { //获取对头
return list.getFirst();
}
@Override
public E getRear() { //获取队尾
return list.getLast();
}
@Override
public void clear() { //清除队
list.clear();
}
}
5.循环顺序队列
将顺序表收尾相连,形成循环表。
实现方式:

本文深入探讨了数据结构中的队列概念,包括队列模型、顺序队列和链表队列的实现,详细阐述了进队、出队、获取队头和清除队列等基本操作,并提供了相应的代码示例。此外,还提到了循环顺序队列的实现方式。
757

被折叠的 条评论
为什么被折叠?



