第十九天算法设计

Queue 类实现:
java
package suanfa;

public class Queue {
private Node first; // 队列的第一个节点
private Node last; // 队列的最后一个节点
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 = new 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

posted @   申shen  阅读(1)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示