基于单链表的FIFO队列结构

FIFO queue structure based on a singly linked list

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

我被 poll 和 peek 困住了,无法在 return 语句中获得 Object。或者可能有另一种方法可以做到这一点。如有任何帮助,将不胜感激。

add - 使用add()方法向队列中添加元素
poll - 获取并删除队列头部的元素
peek- 作为池而不删除

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());

class Node<T> {
    Node<T> next;
    T value;
    public Node(T value) {
        this.value=value;
    }

    public T getObject() {
        return value;
    }
}

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

从构造函数中删除 <T> 否则您将定义一个新的 T 并且赋值 this.value=value; 将不起作用。