Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的双链列表_Java_Linked List - Fatal编程技术网

Java中的双链列表

Java中的双链列表,java,linked-list,Java,Linked List,我必须实现类“DoubleChainedList”和“Elem”。DoubleChainedList管理一个双链列表,Elem是关联的节点类,带有指向后续和前置的指针 我必须实施以下方法: public void removeAtIndex(int i)//删除位置i处的元素。如果i>length-1或i您的双链列表应该有头部和尾部。这些分别是列表的开头和结尾。已指示您命名Elem的列表中的每个节点应具有prev和next类型的Elem。您的Elem类包含另一个名为Node的类-这似乎是多余的,

我必须实现类“DoubleChainedList”和“Elem”。DoubleChainedList管理一个双链列表,Elem是关联的节点类,带有指向后续和前置的指针

我必须实施以下方法:


public void removeAtIndex(int i)//删除位置i处的元素。如果i>length-1或i您的
双链列表
应该有
头部
尾部
。这些分别是列表的开头和结尾。已指示您命名
Elem
的列表中的每个节点应具有
prev
next
类型的
Elem
。您的
Elem
类包含另一个名为
Node
的类-这似乎是多余的,可能会让您感到困惑-将其展平到
Elem
类中

您的
minimate()
方法包含一个错误,因为它正在更改列表。创建一个单独的
Elem
变量来导航列表的内容-不要在此处更改
head
tail

当列表为空时返回Integer.MIN_值会产生误导。如果列表为空,则考虑抛出异常。您将发现,在列表实现的几乎每个方法中,都必须为is empty情况定义特殊处理

public class DoubleChainedList {
  private Elem head;
  private Elem tail;

  // using protected here because you aren't exposing this to consumers
  // but its available for extension
  protected class Elem {
    private int data;
    private Elem prev;
    private Elem next;
  }

  public int smallest() {
    if (head == null) {
      throw new Exception("list is empty - no smallest value");
    }
    int min = Integer.MAX_VALUE;

    Elem cursor = head;
    while (cursor != null) {
      min = Math.min(min, cursor.data);
      cursor = cursor.next;
    }
    return min;
  }
}

您的
双链列表
应该有
头部
尾部
。这些分别是列表的开头和结尾。已指示您命名
Elem
的列表中的每个节点应具有
prev
next
类型的
Elem
。您的
Elem
类包含另一个名为
Node
的类-这似乎是多余的,可能会让您感到困惑-将其展平到
Elem
类中

您的
minimate()
方法包含一个错误,因为它正在更改列表。创建一个单独的
Elem
变量来导航列表的内容-不要在此处更改
head
tail

当列表为空时返回Integer.MIN_值会产生误导。如果列表为空,则考虑抛出异常。您将发现,在列表实现的几乎每个方法中,都必须为is empty情况定义特殊处理

public class DoubleChainedList {
  private Elem head;
  private Elem tail;

  // using protected here because you aren't exposing this to consumers
  // but its available for extension
  protected class Elem {
    private int data;
    private Elem prev;
    private Elem next;
  }

  public int smallest() {
    if (head == null) {
      throw new Exception("list is empty - no smallest value");
    }
    int min = Integer.MAX_VALUE;

    Elem cursor = head;
    while (cursor != null) {
      min = Math.min(min, cursor.data);
      cursor = cursor.next;
    }
    return min;
  }
}

head
是类
Elem
的成员,而不是类
双链列表的成员
@Benoit感谢您的建议。那么,我应该在类DoubleChainedList中添加head吗?您可以在google上搜索,也可以在java“double Link list”上搜索,并找到许多示例。
head
是类
Elem
的成员,而不是类
DoubleChainedList
@Benoit谢谢您的建议。那么,我应该在DoubleChainedList类中添加head吗?您可以在google上搜索,也可以在java“double linked list”上搜索,并找到许多示例。
public class DoubleChainedList {
  private Elem head;
  private Elem tail;

  // using protected here because you aren't exposing this to consumers
  // but its available for extension
  protected class Elem {
    private int data;
    private Elem prev;
    private Elem next;
  }

  public int smallest() {
    if (head == null) {
      throw new Exception("list is empty - no smallest value");
    }
    int min = Integer.MAX_VALUE;

    Elem cursor = head;
    while (cursor != null) {
      min = Math.min(min, cursor.data);
      cursor = cursor.next;
    }
    return min;
  }
}