2017-01-24 10 views
1

私は比較的新しいデータ構造をとる前に、Javaを使い慣れていないので、自由な時間を覚えようとしています。今夜はLinked Listのすべてについて。私はLinkedListを持っていて、リストを昇順に並べようとしています。数字が5,4,6,9,1であるとします。カスタムリンクリストの要素を昇順で表示します

実際に1,4,5,6,9とする方法はありますか?今

は、私は現在、これをやろうとしていると私がいるすべては、次のとおりです。

public void order (LinkedList head) { 
    if (head == null) 
     return; 
    else { 
     order(head.next); 
     System.out.print(" " + head.data); 
     return; 

代わりに昇順の元のリンクリストの逆のプリントアウト:1、9、6 、4、5

私はここで間違っていますか?

+0

'Collections.sort(list);' –

+1

@RobbyCornelissen私はこれがJDKの 'LinkedList'だとは思わない。 – shmosel

+0

リンクされたリストは単なるクラス名です。私は再帰を使用することを望んでいたし、再帰的にそれを通って正直である。とにかく簡単な方法をとらないでください。 – ohvanity

答えて

3

LinkedListはあなた

1のいずれか、自分で定義したクラスである場合には)、ソートや

2を実行するために、独自のソート方法を書く)Comparableを実装するために、あなたのLinkedListを形成し、そこから自分のNodeクラスをしてみましょう。 ArrayListを作成し、そこにノードを追加します。その後、Collections.sort(yourNewArrayList)でソートすることができます。

次のようなものがあります:それはまた、Javaで実装ソートあなたはO(n個(n)のパフォーマンスを記録できますデュアルピボットクイックソートを使用することに注意してくださいを取る価値がある

public class Node implements Comparable<Node>{ 
    private int value; 
    //constructor, getters and other members not shown 

    @Override 
    public int compareTo(Node n){ 
     return this.getValue() - n.getValue(); 
    } 
} 

ArrayList list<Node> = new ArrayList<Node>(); 
while(linkedList.hasNext()){ 
    list.add(linkedList.next()); 
} 

Collections.sort(list); 

0

あなたの目標に応じて、ここでは2つの選択肢があります。java.util.LinkedListまたはjava.util.ArrayListjava.util.Collections.sort()は、これらのARを使用して、動作するコードについては

  1. 非常に優れたプログラマによって書かれ、世界中の何百万人ものプログラマが常時使用しています。だから、あなたはバグを心配する必要はなく、役に立つものを書くことに取り組むことができます。

  2. データ構造のナットとボルトの学習に興味がある場合は、自分で既にLinkedListクラスを作成しているようです。今度はあなた自身のsort()メソッドを書く必要があります。並べ替えは非常によく理解されている問題であり、さまざまな並べ替えアルゴリズムを説明する多くのオンラインリソースがあります。これらは、さまざまな長所と短所を持つ非常に多くのバリエーションがあるため、優れた学習ツールです。

関連する問題