Java 创建自定义链表类--需要帮助实现get方法吗

Java 创建自定义链表类--需要帮助实现get方法吗,java,linked-list,Java,Linked List,我正在尝试创建一个自定义链表,到目前为止,我已经了解了如何创建一般结构以及两个最简单的方法insertFirst和deleteFirst。接下来我要做的是创建一个get方法,该方法获取链接的索引,然后返回该位置的字符串。我没有为每个链接分配任何索引或地址,因此我不知道如何引用链接列表中的特定位置。我看到,如果我写first.next,我会得到第二项,first.next.next,我会得到第三项……但我需要弄清楚如何使传递到get方法的索引参数与列表中的正确位置相关联……我该怎么做 请原谅任何草

我正在尝试创建一个自定义链表,到目前为止,我已经了解了如何创建一般结构以及两个最简单的方法insertFirst和deleteFirst。接下来我要做的是创建一个get方法,该方法获取链接的索引,然后返回该位置的字符串。我没有为每个链接分配任何索引或地址,因此我不知道如何引用链接列表中的特定位置。我看到,如果我写first.next,我会得到第二项,first.next.next,我会得到第三项……但我需要弄清楚如何使传递到get方法的索引参数与列表中的正确位置相关联……我该怎么做

请原谅任何草率的代码…我一定会清理的细节后,我得到了链表结构的掌握

这是我的代码,高级谢谢

测试代码

我的班级


首先,如果您正在创建自己的LinkedList类,那么应该将其命名为LinkedList类,而不是使用现有的LinkedList类。因此,您可以使用MyLinkedList


其次,您不能通过索引访问LinkedList中的元素。这不是LinkedList的工作方式,如果您正在创建自己的LinkedList,那么LinkedList也不应该这样工作。而是根据价值来获取它们。因此,您应该将该值传递给get方法,并遍历LinkedList以获得具有给定值的适当链接。

首先,如果您要创建自己的LinkedList类,则应将其命名为这样的类,而不是使用现有的LinkedList类。因此,您可以使用MyLinkedList


其次,您不能通过索引访问LinkedList中的元素。这不是LinkedList的工作方式,如果您正在创建自己的LinkedList,那么LinkedList也不应该这样工作。而是根据价值来获取它们。因此,您应该将该值传递给get方法,并遍历LinkedList以获得具有给定值的适当链接。

LinkedList应该具有查找元素的功能


所以本质上这意味着您需要继续执行element.next,直到到达第n个索引。

LinkedList应该具有查找元素的功能

所以本质上这意味着您需要继续执行element.next,直到到达第n个索引。

假设get0返回第一个元素:

如果要将此方法放入公共类LinkedList中:

    public String get(int index)
    {
         return first.get(index);
    }
或者,您也可以在公共类链接内实现此链接,但这是不可取的,因为它会浪费调用堆栈上的空间:

    public String get(int index)
    {
        assert ( index >= 0 )
        if ( index == 0 ) {
            return this.item;
        } else {
            index--;
            if ( next == null ) {
                return Null;
            }
            return next.get(index)
        }
    }
在公共类LinkedList中:

    public String get(int index)
    {
         return first.get(index);
    }
希望这有帮助

假设get0返回第一个元素:

如果要将此方法放入公共类LinkedList中:

    public String get(int index)
    {
         return first.get(index);
    }
或者,您也可以在公共类链接内实现此链接,但这是不可取的,因为它会浪费调用堆栈上的空间:

    public String get(int index)
    {
        assert ( index >= 0 )
        if ( index == 0 ) {
            return this.item;
        } else {
            index--;
            if ( next == null ) {
                return Null;
            }
            return next.get(index)
        }
    }
在公共类LinkedList中:

    public String get(int index)
    {
         return first.get(index);
    }
希望这有帮助

递归的 迭代的 递归的 迭代的
这将有助于满足您的需求:


这将有助于满足您的需求:

public String get(int index)
{
    assert index >= 0;
    Link cursor = first;
    while (index > 0) {
       if (cursor == null) {
            return null;
        }
        cursor = cursor.next;
        index--;
    }
    return cursor.toString();       
}