-1
我在整理一个链表 一个问题,当我使用此代码编译器进入无限循环,不要做我一直要求改变插入的代码进行排序代码如何对链表进行排序?
public void insert(int val) {
Node currentNode = head;
Node nextNode = head.next;
if (currentNode.num > val) {
Node tmpNode = head;
head = new Node(val);
head.next = tmpNode;
return;
}
if (nextNode != null && nextNode.num > val) {
currentNode.next = new Node(val);
currentNode.next.next = nextNode;
return;
}
while (nextNode != null && nextNode.num < val) {
currentNode = nextNode;
nextNode = nextNode.next;
}
currentNode.next = new Node(val);
currentNode.next.next = nextNode;
}
任何事情但这就是我带它看起来很糟糕
这必须排序链表...我想!
public void sort() {
Node currentNode = head;
Node nextNode = head.next;
while (nextNode != null) {
if(currentNode.num>currentNode.next.num){
Node tmpNode=currentNode;
currentNode.num=currentNode.next.num;
currentNode.next.num=tmpNode.num;
}
}
}
你永远不会在循环中设置'nextNode'。但即使你仍然不能排序清单。那只会摆脱无限循环。 – Keiwan
您所拥有的仅仅是一段代码片段文章,其中不乏精力所及。如果你要求帮助理解,你需要提供一个更好的想法,你卡在哪里。添加一些个人注释(例如代码注释),表达您认为代码正在执行的内容,并且人们可以理解您思考中的任何错误并相应地提供帮助。 – Kache
你是什么意思*改变一个'insert'到排序方法*?这是两个完全不同的东西。此外,您的插入功能已经保持列表排序。 (它不会检查'head == null'是否只是作为旁注)。 – Keiwan