我的LinkedList -
class MyList{
int N;
MyList next = null;
MyList(int N){
this.N = N;
}
@Override
public String toString() {
MyList curr = this;
String output = "";
while(curr != null){
output = output+curr.N+"-->";
curr = curr.next;
}
return output+"TAIL";
}
}
排序方法ALGO -
private static MyList sortLL(MyList L){
int temp;
if(L == null || L.next == null)
return L;
MyList current = L;
MyList previous = null;
while(current.next != null){
if(current.N > current.next.N){
temp = current.N;
current.N = current.next.N;
current.next.N = temp;
}
previous = current;
current = current.next;
}
return previous;
}
输入 -
MyList list_Sort = new MyList(9);
list_Sort.next = new MyList(8);
list_Sort.next.next = new MyList(8);
list_Sort.next.next.next = new MyList(7);
list_Sort.next.next.next.next = new MyList(5);
list_Sort.next.next.next.next.next = new MyList(4);
list_Sort.next.next.next.next.next.next = new MyList(6);
list_Sort.next.next.next.next.next.next.next = new MyList(3);
list_Sort.next.next.next.next.next.next.next.next = new MyList(1);
list_Sort.next.next.next.next.next.next.next.next.next = new MyList(2);
输入 - 9 - > 8 - > 8 - > 7 - > 5 - > 4 - > 6 - > 3 - > 1 - > 2 - > TAIL
输出 - 2 - > 9 - > TAIL
预期输出 - 输入应按排序顺序
答案 0 :(得分:1)
首先,您无法使用显示的算法对此进行排序。假设您正在使用bubblesort,排序是一个O(n ^ 2)操作。下一个问题是你的'上一个'被覆盖了。
您实际上不需要先前的逻辑。您没有交换正在交换列表值的列表的节点。您可以使用L.
导航列表,而不是返回之前的内容(完全删除它)另一方面,假设您正在尝试学习新事物;我建议您学习如何使用调试器。