gpt4 book ai didi

java - Java LinkedQueue 的打印方法未获取前面的值

转载 作者:行者123 更新时间:2023-12-01 17:29:23 25 4
gpt4 key购买 nike

我用Java实现了一个LinkedQueue。这是我自己的实现,它不扩展任何类或实现任何接口(interface)(项目的要求)但是,我的打印方法没有返回队列中的第一项。有什么想法吗?

ListNode 类

public class ListNode<AnyType> {
public ListNode( AnyType theElement ) {
this( theElement, null );
}
public ListNode( AnyType theElement, ListNode<AnyType> n) {
element = theElement; next = n;
}

public AnyType element;
public ListNode next;
}

LinkedQueue 类

public class LinkedQueue <AnyType> {
private ListNode<AnyType> front;
private ListNode<AnyType> back;


LinkedQueue() {
front = back = null;
}

public void enqueue ( AnyType x ) {
if ( isEmpty())
back = front = new ListNode<AnyType>(x);
else back = back.next = new ListNode<AnyType>(x);
}
public LinkedQueueIterator<AnyType> first() {
return new LinkedQueueIterator<AnyType>(front.next);
}

public static <AnyType> void printList(LinkedQueue theList) {
if (theList.isEmpty()) {
System.out.println("Empty List");
} else {
LinkedQueueIterator<AnyType> itr = theList.first();
for( ; itr.isValid(); itr.advance()) {
System.out.print( itr.retrieve() + " ");
}
}
}

LinkedQueueIterator 类

public class LinkedQueueIterator<AnyType> {
ListNode<AnyType> current;
LinkedQueueIterator(ListNode<AnyType> theNode) {
current = theNode;
}

public boolean isValid(){
return current != null;
}

public AnyType retrieve(){
return isValid() ? current.element : null;
}

public void advance() {
if( isValid())
current = current.next;
}


}

我真的看不出它有什么问题,但如果我执行 LQ.enqueue("A")、LQ.enqueue("B")、LQ.enqueue("C") 并调用 printList,我都会得到的是BC

最佳答案

看了你的代码一段时间后,只是因为你的小错误,你的 first() 方法返回了前面元素之后的元素,在这段代码中:

public LinkedQueueIterator<AnyType> first() {
return new LinkedQueueIterator<AnyType>(front.next);
}

因为要获取队列的第一个元素,那么应该这样修改:

public LinkedQueueIterator<AnyType> first() {
return new LinkedQueueIterator<AnyType>(front);
}

现在你的程序应该可以正常运行了。

关于java - Java LinkedQueue 的打印方法未获取前面的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61152804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com