假设我们有以下用于的Java类Cell<T>
的声明
构建单链表:
class Cell<T> {
T first;
Cell<T> next;
Cell(T f, Cell<T> n) {
first = f;
next = n;
}
}
问题1。
解释如何使用由Cell<T>
个对象组成的链表数据结构来实现
Java接口List<E>
。你可以用英语解释,可能还有图表
不需要为实现编写Java代码来回答这个问题。
尝试(问题1)。
老实说,不知道从哪个问题开始。也许如果我们有一个包含Cell<T>
个对象的链表数据结构,我们可以使用一个ArrayList吗?
问题2。
Java的List<E>
接口使用以下签名删除方法:
public E remove(int i)
编写Java代码,为代码1中描述的实现提供此方法。
尝试(问题2)。 好吧,因为我不理解问题1,我也不能提供解释,我不知道如何做到这一点。
问题3。 编写一个Java方法,它接受一个表示链表的Cell对象,并返回一个链表长度的数组,并按顺序包含链表的元素 发生在列表中。
尝试(问题3)。 我的老师为这个问题提供了一个解决方案,但他没有给出足够的解释。所以,如果有人能够解释我的解决方案,那将是很好的,我不理解循环部分的迭代:
for (Cell<T> ptr = list; ptr != null; ptr = ptr.next)
解决方案(问题3)。
public static <T> T[] question3(Cell<T> c) {
int count = 0;
for (Cell<T> ptr = list; ptr != null; ptr = ptr.next) {
count++;
}
T[] arr = (T[]) new Object[count];
int i = 0;
for (Cell<T> ptr = list; ptr != null; ptr = ptr.next;i++){
arr[i] = ptr.first;
}
return arr;
}
答案 0 :(得分:0)
1)想想“实现界面”的含义 - (如果需要,请阅读文档) - 为了达到这个目的,你需要做什么?
2)一旦你理解了Q1)这对你来说不是问题
3)查看iterators