我正在尝试将项目插入到自定义链接列表中,同时保持列表顺序。
到目前为止,我的工作是:
public class CustomList {
public CustomList() {
this.first = null;
}
public void insert(Comparable newThing) {
Node point = this.first;
Node follow = null;
while (point != null && point.data.compareTo(newThing) < 0) {
follow = point;
point = point.next;
}
if (point == null) {
Node newNode = new Node(newThing);
newNode.next = this.first;
this.first = newNode;
} else {
Node newNode = new Node(newThing);
newNode.next = point;
if (follow == null) {
this.first = newNode;
} else {
follow.next = newNode;
}
}
}
private Node first;
private class Node {
public Comparable data;
public Node next;
public Node(Comparable item) {
this.data = item;
this.next = null;
}
}
}
我从中获得的输出看起来像命令列表的一部分,然后重新开始。
示例(我正在排序字符串):
而不是像a,b,c,...,z
我得到a,b,c,...,z,a,b,c,...,z,a,b,c,...,z
所以它似乎没有在某些点“看到”整个列表。
这是硬件任务的一部分,所以我很感激建议,但让我试着弄明白自己!
答案 0 :(得分:1)
如果插入的元素大于所有现有元素,会发生什么?
您希望在结尾处插入元素,但实际上您是在开始时插入它。然后在此之前插入任何后来的元素(如果它们更小),或者在开始时再插入。