带有Java列表界面的Linked List数据结构

时间:2015-05-03 17:49:13

标签: java generics linked-list

假设我们有以下用于的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;
}

1 个答案:

答案 0 :(得分:0)

1)想想“实现界面”的含义 - (如果需要,请阅读文档) - 为了达到这个目的,你需要做什么? 2)一旦你理解了Q1)这对你来说不是问题 3)查看iterators