使用Java'的链表数据结构;s列表接口

使用Java'的链表数据结构;s列表接口,java,generics,linked-list,Java,Generics,Linked List,假设我们有一个用于 构建单链表: class Cell<T> { T first; Cell<T> next; Cell(T f, Cell<T> n) { first = f; next = n; } } 编写Java代码,给出问题1中描述的实现方法 尝试(问题2)。 因为我不理解问题1,也不能解释我不知道怎么做 问题3. 编写一个Java方法,它接受一个表示链表的单元格对象,并返回一个与

假设我们有一个用于 构建单链表:

class Cell<T> {

    T first;
    Cell<T> next;

    Cell(T f, Cell<T> n) {
        first = f;
        next = n;
    }
}
编写Java代码,给出问题1中描述的实现方法

尝试(问题2)。 因为我不理解问题1,也不能解释我不知道怎么做

问题3. 编写一个Java方法,它接受一个表示链表的单元格对象,并返回一个与链表长度相同的数组,该数组包含链表元素的顺序 出现在列表中

尝试(问题3)。 老师给了我这个问题的答案,但他解释得不够好。因此,如果有人能向我解释解决方案,那将是非常好的,我不理解循环部分的迭代:

for (Cell<T> ptr = list; ptr != null; ptr = ptr.next)
for(单元格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;
}
公共静态T[]问题3(单元格c){
整数计数=0;
for(单元格ptr=list;ptr!=null;ptr=ptr.next){
计数++;
}
T[]arr=(T[])新对象[计数];
int i=0;
for(单元格ptr=list;ptr!=null;ptr=ptr.next;i++){
arr[i]=ptr.first;
}
返回arr;
}
1)思考“实现接口”的含义(如果需要,请阅读文档)-为了实现这一点,您需要做什么?
2) 一旦你理解了问题1),这对你来说就不是问题了。

3) 查看
迭代器

请只问一个问题,而不是三合一。前两个问题实际上是论文中的一个问题。为了便于阅读,我将其拆分为两个,但是的,将来我将避免问多个问题。有一个cons单元格实现列表是有问题的,但有一个(不使用ArrayList)在内部使用链表实现列表。在这两种情况下的实现都归结为“链表数据结构”的含义(cons列表或此类数据结构的包装器).你不认为从google了解
LinkedList
数据结构比在这里发布你的整个问题报告更好吗?;)无论如何,看看这个单链接列表的实现,要删除索引中的单元格,需要从列表开始进行迭代,然后“修复”上一个元素,跳过要删除的元素。第一个元素需要使用特殊的大小写(不能删除,必须保留为表示列表开头的对象,因为
remove
无效)。
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;
}