Я реализовал LinkedQueue в Java. Это моя собственная реализация, она не расширяет классы и не реализует интерфейсы (требования проекта). Однако мой метод печати не возвращает первый элемент в очереди. Есть идеи почему?
Класс 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, все, что я получу, это B C