我有一个简单的算法,可以在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;
}