我正在尝试过去一年的问题,并与下面的问题卡住了。问题1
在下面的示例中,您可以使用以下方法假设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方法的设计。您不应该在方法中引入任何新变量。在你的回答中,不要照搬整个方法。写入初始化1、初始化2、块1、块2、块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;
}
}
}
我已经在/…/旁边插入了我的答案,但不确定它们是否正确。如果有人能帮我改正错误,我将不胜感激
3条答案
按热度按时间nwlls2ji1#
printbackward方法的设计非常奇怪,似乎他们希望你使用迭代器,不管你在每个递归中得到最后一个位置的是什么,必须是性能/有效性在这里不是一个问题,或者他们想看看你有多聪明。找到以下解决方案:
你可以用
java.util.LinkedList
以及java.util.ListIterator
这样地:svgewumm2#
}
iqxoj9l93#
获取列表的长度并创建一个for循环来向后遍历它们。