如何解决Java变量按引用传递
我为链接列表实现了冒泡排序,它交换了整个节点而不是值。我已经调试了很多次,并且排序算法运行正常。但最后,它不会更新链表的头(起始)指针。如果我返回列表的第一个节点并将其分配给原始节点,则它工作正常。但是我需要的是当我给起始节点一个函数时,应该对列表进行排序并重新排列节点。
主程序
// implementations details for the linked list
public static LinkedNode<Integer> linkedList=null;
public static LinkedNode<Integer> rear=null;
public static void main(String[] args) {
readValues("random10.txt");
// when I do like this it is not working
// new Sorting().bubbleSort(linkedList);
// if I do like this it is working fine
linkedList= new Sorting().bubbleSort(linkedList);
displayList();
}
排序功能
public LinkedNode<Integer> bubbleSort(LinkedNode<Integer> first){
LinkedNode<Integer> i,j;
LinkedNode<Integer> previous;
LinkedNode<Integer> node_1;
LinkedNode<Integer> node_2;
previous = first;
boolean swapped=false;
for (i = first; i != null; i = i.next) {
swapped=false;
previous=first;
for (j = first; j.next != null; j = j.next) {
if (j.getElement() > j.next.getElement()) {
swapped=true;
node_1 = j;
node_2 = j.next;
System.out.printf("\nprevious = %d node1 = %d node2 = %d",previous.data,node_1.data,node_2.data);
if (node_1.equals(previous)) {
var temp=node_2.next;
first=node_2;
first.next=node_1;
node_1.next=temp;
i=first;
} else {
previous.next = node_2;
node_1.next = node_2.next;
node_2.next = node_1;
}
j=node_2;
}
previous = j;
}
if (!swapped){
break;
}
}
return first;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。