Java中的双链列表
我必须实现类“DoubleChainedList”和“Elem”。DoubleChainedList管理一个双链列表,Elem是关联的节点类,带有指向后续和前置的指针 我必须实施以下方法: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的类-这似乎是多余的,
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;
}
}