【发布时间】:2017-03-22 11:27:28
【问题描述】:
我在对链表进行排序时遇到问题。 当我使用这段代码时,编译器进入一个无限循环并且不做任何事情,我被要求更改插入代码以对代码进行排序
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。但即使你愿意,它仍然不会对列表进行排序。这样就可以摆脱无限循环。 -
你所拥有的只是一个代码 sn-p 帖子,它散发着低效的味道。如果您寻求帮助理解,您需要更好地了解您卡在哪里。添加一些个人注释(例如代码 cmets)来表达您认为代码在做什么,人们可以理解您的想法中的任何错误并提供相应的帮助。
-
你是什么意思将
insert更改为排序方法?这是两个完全不同的东西。此外,您的插入功能已经使列表保持排序。 (它不会检查head == null是否 - 只是作为旁注)。 -
这是重点....这是问题很奇怪的问题
标签: java arrays sorting linked-list