我在JAVA中創建了一個程序,將元素添加到LinkedList
中,並在添加元素的同時對元素進行排序。我在排序的情況下使用的技術swap類似於將節點添加到LinkedList的開始時使用的技術。該技術適用於後者,但未能在前者中運行。我不明白爲什麼這不起作用。以下是我的代碼供您參考。爲什麼我不能使用此Java代碼對用戶定義的LinkedList進行排序?
//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