【发布时间】:2012-08-24 13:19:22
【问题描述】:
我正在尝试过去一年的问题以进行重考,并被以下问题所困扰。 问题一
下面你可以假设存在 ListIterator 接口和 LinkedList 类,方法如下
public interface ListIterator<E>
{
E next();
boolean hasNext();
}
public class LinkedList<E>
{
public void addLast(E obj){..}
public int size(){..}
public ListIterator<E> listIterator(){...}
}
使用上面列出的 ListIterator 接口和 LinkedList 类中的方法完成了下面给出的 printBackward 方法的设计。您不应该在方法中引入任何新变量。在您的回答中,不要复制整个方法。写入 Initialisation 1, Initialisation 2, Block 1, Block 2, Block 3 的内容。 printBackward 方法应该递归地写在一个向后的单个列表中。参数 n 指定列表的大小。
public class MyLinkedList<E> extends LinkedList<E>
{
public void printBackward(int n)
{
if(n > 0){
ListIterator<E> itr = /**Initialisation 1**/ list1.listIterator();
int count = /**Initialisation 2**/ 0;
E item;
while(itr.hasNext())
{
/**Block 1**/ addLast(list1); printBackward(); count --;
}
/**Block 2**/ E.next;
}else
/**Block 3**/ return;
}
}
}
我已在 /** ..**/ 旁边插入我的答案,但不确定它们是否正确。如果有人可以帮助我纠正我的错误,将不胜感激
【问题讨论】:
-
如果你只是打印,那么你不需要在链表中添加任何东西。
-
那么,不能更改 printBackward 方法吗?为什么 ListIterator
会重新初始化? -
@davidmontoyago,我得到了代码,只允许用 /**...**/ 更改位我不知道为什么要重新初始化...有点帮助? ?
标签: java algorithm recursion iterator linked-list