基于单链表的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;
将不起作用。
在我正在学习的 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;
将不起作用。