【发布时间】:2020-10-13 13:01:23
【问题描述】:
在我现在学习的java课程中,我需要实现一个基于单链表的先进先出队列结构。我必须实现接口并覆盖 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());
【问题讨论】:
-
"can't get an Object in return statement": 请解释一下。
-
我的猜测是
getObject应该返回初始化节点的值,即在您的示例字符串中,例如“finns”、“bella”等。此外,您可能需要重新考虑是否value字段实际上应该是Node或者它是否应该是泛型类型 T。
标签: java linked-list queue