Java 如何对链接列表进行排序?

Java 如何对链接列表进行排序?,java,arrays,sorting,linked-list,Java,Arrays,Sorting,Linked List,我对链表排序有问题。 当我使用这段代码时,编译器会进入一个无限循环,并且不会做任何事情。我被要求更改插入代码以对代码进行排序 public void insert(int val){ 节点当前节点=头; 节点nextNode=head.next; 如果(currentNode.num>val){ 节点tmpNode=头部; head=新节点(val); head.next=tmpNode; 返回; } if(nextNode!=null&&nextNode.num>val){ currentNo

我对链表排序有问题。 当我使用这段代码时,编译器会进入一个无限循环,并且不会做任何事情。我被要求更改插入代码以对代码进行排序

public void insert(int val){
节点当前节点=头;
节点nextNode=head.next;
如果(currentNode.num>val){
节点tmpNode=头部;
head=新节点(val);
head.next=tmpNode;
返回;
}
if(nextNode!=null&&nextNode.num>val){
currentNode.next=新节点(val);
currentNode.next.next=nextNode;
返回;
}
while(nextNode!=null&&nextNode.num
但这就是我要做的看起来很糟糕

这必须对链接列表进行排序。。。我想

public void sort(){
节点当前节点=头;
节点nextNode=head.next;
while(nextNode!=null){
if(currentNode.num>currentNode.next.num){
节点tmpNode=当前节点;
currentNode.num=currentNode.next.num;
currentNode.next.num=tmpNode.num;
}
}
}

我假设您希望在插入自身时对链表进行排序。这样您就不需要另一个函数来对其进行排序。你没有考虑最初的情况下,头将是空的,只是错误

public void insert(int val){
节点当前节点=头;
节点nextNode=head.next;
if(head==null){
head=新节点(val);
head.next=null;
返回;
}
如果(currentNode.num>val){
节点tmpNode=头部;
head=新节点(val);
head.next=tmpNode;
返回;
}
if(nextNode!=null&&nextNode.num>val){
currentNode.next=新节点(val);
currentNode.next.next=nextNode;
返回;
}
while(nextNode!=null&&nextNode.num
您永远不会在循环中设置
nextNode
。但即使你愿意,它也不会对列表进行排序。这样就可以摆脱无限循环了,你所得到的只是一篇代码片段文章,这篇文章散发出一种低工作量的味道。如果你要求帮助理解,你需要提供一个更好的想法,你被困在哪里。添加一些个人注释(例如代码注释),表达您认为代码正在做的事情,人们可以理解您思维中的任何错误并提供相应的帮助。将
insert
更改为排序方法是什么意思?这是两件完全不同的事情。另外,您的insert函数已经对列表进行了排序。(它不检查head==null,只是作为旁注)。。。。这是一个问题很奇怪可能重复的问题