Java 基于单链表的FIFO队列结构
在我现在学习的java课程中,我需要实现一个基于单链表的FIFO队列结构。我必须实现接口并覆盖3个方法:add、poll和peek 我被poll和peek卡住了,无法在return语句中获得对象。或者可能有另一种方法。如果有任何帮助,我将不胜感激 add-使用add()方法将元素添加到队列中Java 基于单链表的FIFO队列结构,java,linked-list,queue,Java,Linked List,Queue,在我现在学习的java课程中,我需要实现一个基于单链表的FIFO队列结构。我必须实现接口并覆盖3个方法:add、poll和peek 我被poll和peek卡住了,无法在return语句中获得对象。或者可能有另一种方法。如果有任何帮助,我将不胜感激 add-使用add()方法将元素添加到队列中 轮询-获取并删除队列头部的元素 peek-作为池而不移除 public class Queue<T> implements Queue2<T> { Node<T>
轮询-获取并删除队列头部的元素
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?
}
}
}
公共类队列实现Queue2{
节点头;
节尾;
整数大小;
@凌驾
公共布尔加法(TE){
节点=新节点(e);
if(head==null){
头部=节点;
尾=节点;
}否则{
tail.next=节点;
尾=节点;
node.next=null;
}
大小++;
返回true;
}
@凌驾
公众投票{
如果(大小==0)
返回null;
否则{
T obj=head.getObject();
head=head.next;
if(head==null){
tail=null;
}
大小--;
返回obj;
}
}
@凌驾
公共T peek(){
if(head==null)
返回null;
否则{
返回head.getObject();
}
}
类节点{
节点下一步;
节点值;
公共节点(T值){
}
公共T getObject(){
**return null;**//这里应该返回什么?
}
}
}
publicstaticvoidmain(字符串[]args){
队列1=新队列();
1.添加(“芬兰人”);
1.加上(“贝拉”);
1.添加(“ssara”);
1.添加(“nanna”);
1.添加(“安娜”);
System.out.println(queue1.peek());
System.out.println(queue1.poll());
类节点{
节点下一步;
T值;
公共节点(T值){
这个。值=值;
}
公共T getObject(){
返回值;
}
}
节点中的值是您的对象,因此类型应为T
,而不是Node
从构造函数中删除
,否则您将定义一个新的T,赋值this.value=value;
将不起作用。类节点{
节点下一步;
T值;
公共节点(T值){
这个。值=值;
}
公共T getObject(){
返回值;
}
}
节点中的值是您的对象,因此类型应为T
,而不是Node
从构造函数中删除
,否则您将定义一个新的T,赋值this.value=value;
将不起作用。“无法在return语句中获取对象”:请解释。我猜getObject
应该返回节点初始化时使用的值,即在示例字符串中,例如“finns”、“bella”等。此外,您可能需要重新考虑值
字段实际上是否应该是节点
,还是应该是泛型类型T。“无法在返回语句中获取对象。”:请解释。我猜getObject
应该返回节点初始化时使用的值,即在示例字符串中,例如“finns”、“bella”等等。此外,您可能需要重新考虑值
字段是否应实际为节点
,或者它是否应为泛型类型T。啊啊啊啊,那些错误)谢谢!啊啊啊啊,那些错误)谢谢!
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;
}
}