Я создал программу в JAVA, чтобы добавить элементы в LinkedList
и отсортировать элементы при их добавлении. swap метод, который я использую в случае сортировки, аналогичен используемому при добавлении узла к , начинающему LinkedList. Техника работает в последнем случае, но не работает в первом. Я не понимаю, почему это не работает. Ниже мой код для вашей справки.Почему я не могу сортировать пользовательский LinkedList с этим java-кодом?
//Node class
class Node{
int d; Node link;
Node(int d){
this.d = d;
link = null;
}
}//Node
//LinkedList class
class LL{
Node start;
LL(){
start = null;
}
//method to add and sort the nodes
//in ascending order of the values of 'd' of the nodes
void insert(Node nd){
if(start==null){
start = nd;
}
else{
Node temp = start;
while(temp!=null){
if(nd.d<=temp.d){
Node t2 = temp;
temp = nd;
nd.link = t2;
break;
}
temp = temp.link;
}
}
}//insert
//method to display nodes of the LinkedList
void display(){
Node temp = start;
do{
System.out.print(temp.d + " ");
temp = temp.link;
}while(temp!=null);
}//display
}//LL
//Main class
class LL_Test{
public static void main(String[] args){
LL myLL = new LL();
myLL.insert(new Node(5));
myLL.insert(new Node(2));
myLL.insert(new Node(7));
myLL.insert(new Node(6));
myLL.insert(new Node(1));
myLL.display();
}//main
}//LL_Test
Ожидаемый результат: 1 2 5 6 7
Добывается выход: 5
Не должно быть temp.d <= nd.d? – SomeDude
@svasa: Не совсем. Условием завершения было 'nd.d <= temp.d', поэтому оно должно быть'! (Nd.d <= temp.d) '=' nd.d> temp.d'. Но в принципе ты прав. Исправлено это. – fabian
@progy_rock: Я только что протестировал его, и результат был «1 2 5 6 7». Обратите внимание, что была проблема, о которой говорил svasa, которую я только что установил, но это привело бы к обратному порядку ... – fabian