Итак, я искал больше недели и не смог найти решение своей проблемы. Мой профессор немного помог, но я просто не могу понять, как добавить узлы в отсортированном порядке.
Что я должен делать:
Напишите метод add, который добавляет узел в список в несортированном порядке (когда пользователь вводит их (гипотетически)) и в порядке возрастания от наименьшего к наибольшему.
Моя проблема: я могу добавить узлы в несортированном порядке, однако я не понимаю, почему я не могу создать несортированный. Я явно что-то упускаю, и во всех примерах, которые я посмотрел, ни один из них не делает то, что я должен делать, и слишком сложно следовать тем, которые выполняют только отсортированный порядок, потому что они используют все эти классы. / интерфейсы или что-то, что я не должен использовать, я думаю, или что я не понимаю, как их использовать.
Узлы связанного списка имеют следующий, предыдущий, следующийСортированный, предыдущийСортированный и данные.
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++;
}
Это мой метод добавления, первые несколько строк работают, как и ожидалось, но остальные, я не знаю, что делать с остальными. Я очень смущен в этом пункте и очень расстроен, поскольку ничто, кажется, не работает.
/**
* 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;
}
}
Это класс узла.
Я просто ищу подсказку о том, что я могу делать неправильно, например, если мои соединения испорчены или нет, когда дело доходит до сортировки или я делаю что-то странное. Даже ссылка с простыми объяснениями будет полезна, так как я не очень хорошо разбираюсь в словарном / жаргонизме.