Java单链表和构造函数
我试图弄清楚如何在列表构造函数中初始化当前对象列表,使其最初不包含任何元素。如果我想使用一个单链表,我该怎么做?我知道这是一个关于列表的基本问题,哈哈。如果我想使用双链接列表、尾部引用、循环链接或虚拟节点(如果对所有节点都这样做不太麻烦的话),会有什么不同Java单链表和构造函数,java,list,Java,List,我试图弄清楚如何在列表构造函数中初始化当前对象列表,使其最初不包含任何元素。如果我想使用一个单链表,我该怎么做?我知道这是一个关于列表的基本问题,哈哈。如果我想使用双链接列表、尾部引用、循环链接或虚拟节点(如果对所有节点都这样做不太麻烦的话),会有什么不同 公共类列表实现Iterable{ 私有类节点{ 私有数据; 私有节点下一步; } 当链表发出结束信号时,有两种方法可以考虑链表(基本上是空列表的情况) 第一个是将节点设置为null,之后当您对列表执行操作(添加、删除、迭代)时,可以在继续之前
公共类列表实现Iterable{
私有类节点{
私有数据;
私有节点下一步;
}
当链表发出结束信号时,有两种方法可以考虑链表(基本上是空列表的情况)
第一个是将节点设置为null,之后当您对列表执行操作(添加、删除、迭代)时,可以在继续之前检查它是否为null
第二种方法是使用一个特殊对象(称为sentinel)作为标志而不是null。这可能是一个特殊节点,当您从中获取数据时会引发异常。优点是您不需要在所有方法中管理null值,但可能需要改为管理异常
对于双链接列表,它是完全相同的,只是节点内容发生了变化(添加了一个反向指针)
对于尾部引用,您在list类中添加一个指针,该指针将引用保留在列表尾部,因此您将其作为头指针进行管理,它最初为null或带有一个标志对象,当第一个对象添加到列表中时,两个引用将在同一节点上更新
在循环列表的情况下,它在初始化时仍然保持不变,然后在添加第一个对象时,同时将其自身链接到该对象
例:
公共类列表实现Iterable{
私有类节点{
私有数据;
私有节点下一步;
}
节点第一节点;
公开名单(){
firstNode=null;
}
//其他方法
}
你能明确地告诉我如何在构造函数中将节点设置为null吗?好吧,这只是一个变量赋值,但我正在将它添加到我的答案中。噢。你提到的第二个选项呢?你用null值初始化节点,然后搜索“sentinel对象”或“sentinel值”
public class List<T extends Comparable<T>> implements Iterable<T> {
private class Node<D extends Comparable<D>> {
private D data;
private Node<D> next;
}
public class List<T extends Comparable<T>> implements Iterable<T> {
private class Node<D extends Comparable<D>> {
private D data;
private Node<D> next;
}
Node firstNode;
public List(){
firstNode=null;
}
// other methods
}