【发布时间】:2018-03-23 11:01:23
【问题描述】:
public class LinkedList {
private Node top;
public LinkedList() {
top = null;
}
public void add(String data) {
Node temp = new Node(data, top);
top = temp;
}
public void sort() {
LinkedList sortedList = new LinkedList();
Node i;
Node j;
String temp;
String temp2;
String temp3;
for (i = top; i != null; i.getNext()) {
for (j = i.getNext(); j != null; j.getNext()) {
if (i.getData().compareTo(j.getData()) < 0) {
temp = i.getData();
i.setData(temp);
temp2 = j.getData();
j.setData(temp2);
temp3 = temp;
temp = temp2;
temp2 = temp3;
sortedList.add(temp3);
} else if (i.getData().compareTo(j.getData()) > 0) {
temp3 = i.getData();
sortedList.add(temp3);
}
}
}
}
}
谁能检查我的代码并告诉我为什么我的temp 和temp2 从未被分配和使用?为什么这不起作用?
当我运行 main 时,我只得到原始链表而不是排序的链表。
我的逻辑是否正确?我正在尝试按升序对字符串进行排序。
【问题讨论】:
-
你能说说
top是什么吗?它是第一个节点还是最后一个节点?你能验证输入列表是否有正确的数据。 -
在逐行调试代码的时候发现了什么?
-
Top 是我的第一个节点,它为 null 或为空。
-
你应该使用 Collections.sort() 方法。另请访问此网址以获得更好的理解。 stackoverflow.com/questions/10042/…
-
调试时我发现它一遍又一遍地重复相同的数据值..?
标签: java sorting linked-list bubble-sort