当前位置: 首页 > 知识库问答 >
问题:

基于单链表的FIFO队列结构

娄丁雨
2023-03-14

在我现在学习的java课程中,我需要实现一个基于单链表的FIFO队列结构。我必须实现接口并重写3个方法:add、poll和peek。

我被困在poll和peek中,无法在return语句中获得对象。或者有另一种方法。对于任何帮助都会非常感激。

add-使用add()方法将元素添加到队列中< br> poll -获取并删除队列头部的元素< br> peek- as池,而不删除

public class Queue<T> implements Queue2<T> {

    Node<T> head;
    Node<T> tail;
    int size;

    @Override
    public boolean add(T e) {

        Node<T> node = new Node(e);

        if (head == null) {
            head = node;
            tail = node;
        } else {

            tail.next = node;
            tail = node;
            node.next = null;
        }
        size++;
        return true;
    }


    @Override
    public T poll() {
        if (size == 0)
            return null;
        else {
            T obj = head.getObject();
            head = head.next;
            if (head == null) {
                tail = null;
            }
            size--;

            return obj;
        }

    }

    @Override

    public T peek() {
        if (head == null)
            return null;
        else {

            return head.getObject();

        }
    }


    class Node<T> {
        Node<T> next;

        Node<T> value;

        public <T> Node(T value) {


        }

        public T getObject() {
            **return null;** // what should be returned here?
        }
    }
}
 public static void main(String[] args) {
        Queue<String> queue1 = new Queue<>();
        queue1.add("finns");
        queue1.add("bella");
        queue1.add("ssara");
        queue1.add("nanna");
        queue1.add("anna");
       System.out.println(queue1.peek());
       System.out.println(queue1.poll());

共有1个答案

司徒修能
2023-03-14
class Node<T> {
    Node<T> next;
    T value;
    public Node(T value) {
        this.value=value;
    }

    public T getObject() {
        return value;
    }
}

Node中的值是您的对象,因此应该是T类型,而不是Node

删除

 类似资料:
  • 我需要一个简单的FIFO实现的队列来存储一堆整数(我不介意它是泛型实现)。 在或Trove/Guava库中已经为我烘焙了什么?

  • 我有一个web服务器(比如tomcat),它为http请求服务 每个请求处理都可能生成一些跟踪信息。 我将把这些跟踪信息写入编年史队列(以字节[]为单位,我将自己进行编组/解编组,就像使用protobuf一样) 我将有一个专用的线程来使用裁剪器从编年史队列中读取。每个消息将只处理一次,如果失败,我将使用自己的重试策略将其放回队列以允许下次尝试。 基于以上用例,我有以下问题: > 应该使用多少追加器

  • 我们正在使用AMAZON SQS FIFO队列来处理我们应用程序的预约服务。一旦消息进入队列,它就会触发Amazon Lambda函数来管理预订过程。因为它是一个FIFO队列,所以我们确保如果有2个人请求相同的插槽,那么这个插槽将给第一个请求者。我的问题是:是否有一种方法(也许是SQS FIFO队列中的设置?)这确保了在前一条消息执行完毕之前,一条消息不会触发Amazon Lambda函数。我只是

  • 本文向大家介绍php 数据结构之链表队列,包括了php 数据结构之链表队列的使用技巧和注意事项,需要的朋友参考一下 php 链表队列 实例代码: 如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • 我已将FIFO队列作为目标添加到我们的自定义事件总线中。 当eventbridge连接到FIO队列时,需要MessageGroupId属性。 是否可以动态配置该值? 例如:我有一个FIFO队列,我把来自不同用户的事件。每个事件,在细节属性内,有一个属性uuid与用户标识符。我想使用这个属性,而不是e常量值作为MessageGroupId。这样,同一用户的所有事件都将按顺序处理。 谢谢你!

  • 我使用的参考资料如下: 出于效率考虑,我们选择队列的前面位于列表的开头,队列的后面位于列表的末尾。这样,我们从头部移除,并在尾部插入。 我想知道为什么在头部插入并在尾巴上移除会不好?这是因为在单链表中,删除尾节点并不容易,因为您必须访问之前的节点,而在单链表中执行此操作的唯一方法是从头开始?