通过引用混淆Java调用

时间:2017-01-06 07:40:50

标签: java algorithm linked-list

我有一个简单的算法,可以在Java中的已排序LinkedList中添加节点。问题在于insertBefore方法。当调用返回到调用方法时,不会通过指向新节点来更新引用(节点)。根据我的理解,Java是通过引用调用的,应该更新底层对象值。任何帮助表示赞赏。

以下是代码:

public MyListNode<Integer> findAndInsert(MyListNode<Integer> node, int nbr)
{

    MyListNode<Integer> head = node;
    MyListNode<Integer> tail = null;

    boolean inserted = false;

    //Sample Input: 2, 3, 5, 7, 9;  1
    //Sample Output: 1, 2, 3, 5, 7, 9

    if(nbr <= node.data)
    {
        insertBefore(node, nbr);
        inserted = true;
    }
    else
    {
        while(node != null && node.next != null)
        {
            if( nbr <= node.next.data )
            {

                insertAfter(node, nbr);
                inserted = true;
                break;
            }

            if(node.next.next == null)
            {
                tail = node.next;
            }

            node = node.next;
        }
    }

    if(!inserted)
    {
        insertAfter(tail, nbr);
    }
    return head;
}

public void insertAfter(MyListNode<Integer> node, int i)
{
    MyListNode<Integer> n = new MyListNode<Integer>(new Integer(i));

    n.next = node.next;
    node.next = n;
}

public void insertBefore(MyListNode<Integer> head, int i)
{
    MyListNode<Integer> newNode = new MyListNode<Integer>(new Integer(i));


    newNode.next = head;
    head = newNode;
}

0 个答案:

没有答案