将内部类对象作为函数参数传递

时间:2015-10-06 16:10:41

标签: java

我正在用Java编写链表。以下是代码:

public class FunctionalList<T> {

    class Node  {
        private T data;
        private Node next;

        //constructor
        public Node(T data, Node next)
        {
            this.data = data;
            this.next = next;
        }
    }
    private Node head;
    /**
     * default constructor, create an empty list
     */
    public FunctionalList() {
        head = null;
    }

    public FunctionalList<T> add( T element ) {
        FunctionalList<T> newList = new FunctionalList<T>();
        add_aux(newList.head, element);

        return newList;
    }

    private void add_aux(Node node, T element)
    {
        if (node == null)
        {
            Node newNode = new Node(element, null);
            node = newNode;
        }
        else if (node.next != null)     // go to the end of the list
        {
            add_aux(node.next, element);
        }
        else
        {
            Node newNode = new Node(element, null);   // create new node
            node.next = newNode;    //add the element to the list
        }
    }
}

我以递归方式实现了add方法。当我尝试将一个元素添加到列表中时,我失败了。我跟踪了add_aux(newList.head,element)之后的问题 - newList.head仍为null。

1 个答案:

答案 0 :(得分:1)

    Node newNode = new Node(element, null);
    node = newNode;

这是因为您要为方法本地的node变量分配引用,并假设它将反映到newList.head中。

一种方法是始终返回node并将其分配给newList.head。这样,它将具有列表的开头。所以你的方法定义如下:

private Node add_aux(Node node, T element) {
.... // all the code is same.
return node; // add this in the end.
}