我被要求在没有任何API的情况下创建自己的链接列表。我有一个数据数组,它是我的元素,然后我的下一个数组,它包含索引引用,用于指向数据数组的下一个值。例如:
int nil = -1
Comparable [] data = new Comparable {1, 4, 5, 2, 18, 9}
int [] next = new int {1, 2, 3, 4, 5, nil}
因此数据中的1指向数据中的4,因为在数据中相应的数组中,数据中的1是接下来的1,这是将用作数据中下一个点的索引的值。
我的问题是我的零值。有人告诉我,将它设置为-1将有效结束列表,但每当我尝试这个时它会被设置为0,因此我尝试的任何东西都会循环,因为结束值将指向第一个值。为什么会发生这种情况,我该怎么做才能避免这种情况?
答案 0 :(得分:2)
在java引用类型中可以分配null
引用。引用类型java.lang.Integer
是原语int
的包装器。因此,如果您使用它,您应该能够使用null
:
Integer[] next = { 1, 2, 3, 4, 5, null };
答案 1 :(得分:0)
Linked-List背后的想法是,如果没有使用任何底层数据结构,您有指向下一个节点的节点(以及前面的节点,如果它是双向链接列表)。 (您正在创建数据结构。)
public class Node
{
public Node Prev { get; set; }
public Node Next { get; set; }
public int Value { get; set; }
}
然后,您可以构建一个使用节点构建结构的LinkedList结构。
public class LinkedList
{
private Node head = null;
private Node tail = null;
public void Add(Node node)
{
//Add code...
}
public void Remove(Node node)
{
//Remoce code...
}
//etc...
}