因此,我已经进行了整整一周的搜索,但未能找到解决我问题的方法。我的教授提供了一些帮助,但我只是想不出如何按排序顺序添加节点。
我该怎么做:
编写一个add方法,该方法将节点按未排序的顺序添加到列表中(当用户输入时(假设)),并且按从小到大的顺序递增。
我的问题:我可以按未排序的顺序添加节点,但是我不明白为什么无法创建未排序的节点。我显然遗漏了一些东西,在我看过的所有示例中,没有一个正在执行我应该做的事情,而遵循仅执行排序顺序的示例太困难了,因为它们使用了所有这些类/ interfaces或我不应该使用的任何东西,或者我不知道如何使用它们的东西。
链接列表节点具有next,previous,nextSorted,previousSorted和数据。
public void add(T t) {
Node node = new Node(t, null, null, null, null);
tail.prev.next=node;
node.next=tail;
tail.prev=node;
if(size==0) {
node.nextSort=tail;
head.nextSort=node;
node.prevSort=head;
tail.prevSort=node;
}else{
Node curr = head.nextSort;
while(curr!=null) {
if(t.compareTo(curr.data)<0) {
node.nextSort=curr;
curr.prevSort.nextSort=node;
node.prevSort=curr.prevSort;
curr.prevSort=node;
}
}
size++;
}
这是我的add方法,前几行可以按预期工作,但其余的行,我真的不知道如何处理其余的行。在这一点上,我感到非常困惑和沮丧,因为似乎没有任何效果。
/**
* This is the doubly-linked list node.
*/
private class Node
{
private T data;
private Node prev;
private Node next;
private Node prevSort;
private Node nextSort;
/**
* Constructs basic list node.
*
* @param d The data element held by the list node.
* @param p A Node that occurs immediately before this in list order.
* @param n A node that occurs immediately after this in list order.
*/
private Node(T d, Node p, Node n, Node ps, Node ns)
{
data = d;
prev = p;
next = n;
prevSort = ps;
nextSort = ns;
}
}
这是节点类。
我只是在寻找有关我可能做错了什么的线索,例如,在排序时我的连接是否混乱,或者我做的事情很奇怪。甚至连简单说明的链接也会有用,因为我不太擅长词汇/行话。