第十九天算法设计
Queue 类实现:
java
package suanfa;
public class Queue
private Node
private Node
private int size; // 队列的大小
// Node 类表示队列中的一个节点
private static class Node<T> {
private T item;
private Node<T> next;
}
// 构造函数,初始化一个空的队列
public Queue() {
first = null;
last = null;
size = 0;
}
// 入队操作,将元素添加到队列的尾部
public void enqueue(T item) {
Node<T> oldLast = last;
last = new Node<>();
last.item = item;
last.next = null;
if (isEmpty()) {
first = last; // 如果队列为空,first 和 last 都指向新节点
} else {
oldLast.next = last; // 否则,将旧队列的尾部节点的 next 指向新节点
}
size++;
}
// 出队操作,从队列的头部移除元素
public T dequeue() {
if (isEmpty()) {
throw new IllegalStateException("Queue is empty");
}
T item = first.item;
first = first.next; // 将 first 指向下一个节点
if (isEmpty()) {
last = null; // 如果队列为空,last 也应该为 null
}
size--;
return item;
}
// 查看队列的头部元素,不移除
public T peek() {
if (isEmpty()) {
throw new IllegalStateException("Queue is empty");
}
return first.item;
}
// 判断队列是否为空
public boolean isEmpty() {
return size == 0;
}
// 获取队列的大小
public int size() {
return size;
}
}
QueueTest 类:
java
package suanfa;
public class QueueTest {
public static void main(String[] args) {
Queue
// 入队操作
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
queue.enqueue(4);
// 查看队列的大小
System.out.println("队列大小: " + queue.size()); // 输出 4
// 查看队列的头部元素
System.out.println("队列头部元素: " + queue.peek()); // 输出 1
// 出队操作
System.out.println("出队元素: " + queue.dequeue()); // 输出 1
System.out.println("出队元素: " + queue.dequeue()); // 输出 2
// 查看队列的大小
System.out.println("队列大小: " + queue.size()); // 输出 2
// 查看队列的头部元素
System.out.println("队列头部元素: " + queue.peek()); // 输出 3
// 判断队列是否为空
System.out.println("队列是否为空: " + queue.isEmpty()); // 输出 false
}
}
录制: untitled2 – Insertion.java
录制文件:https://meeting.tencent.com/crm/KzGGkGE85d
浙公网安备 33010602011771号