-2

我被要求在没有任何 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,因此我尝试的任何操作都会循环,因为最终值将指向第一个值。为什么会发生这种情况,我该怎么做才能避免这种情况?

4

2 回答 2

2

在java中引用类型可以被分配一个null引用。java.lang.Integer,一种引用类型,是对原语的包装int。因此,如果您改用它,您应该可以使用null

Integer[] next = { 1, 2, 3, 4, 5, null };
于 2013-10-31T10:09:28.457 回答
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...
    }
于 2013-10-31T10:16:30.123 回答