0

現在、自分でプログラミング プロジェクトを行っており、助けが必要です。

これは私が使用している LinkedList クラスです:

class LinkedList {
    Node cursor;
    private Node head;  // first node in the linked list
    private int count;

    public int getCount() {
        return count;
    }
    public Node getHead() {
        return head;
    }
    public LinkedList() {
        head = null;    // creates an empty linked list
        count = 0;
    }
    public void addFront(int n) {
        Node newNode = new Node(n);
        newNode.setLink(head);
        head = newNode;
        count++;
    }
    public void deleteFront() {
        if (count > 0) {
            Node temp = head;
            head = temp.getLink();
            temp = null;
            count--;
        }
    }
}

以下は私の質問です:

  1. LinkedList の任意の位置にあるノードを削除するメソッドを作成するにはどうすればよいですか? 最初のノードの位置が 1 であると仮定すると、2 番目のノードの位置は 2 というようになります。

  2. ノード 1 とノード 2 のノードの位置を交換するにはどうすればよいですか?

  3. 名前に基づいて昇順で LinkedList を並べ替えるにはどうすればよいですか (名前が「albumName」であると仮定)。

4

2 に答える 2

2

find(int)1.)削除しようとしているノードへの参照を取得できる Node を返す何らかのメソッドを作成する必要があります。

二重にリンクされたものがあると仮定すると、ノードの参照を変更するだけで、ガベージコレクターがそのノードをメモリから消去します。

サインリンクされている場合は、削除するノードを見つける for ループを使用する必要があります。次に、現在のノードに続く前のノードへの参照を使用して、prev の next の参照を curr.next に変更します。 .

2.) find メソッドを記述する場合は、ノード内のデータを切り替えるか、remove から同様の for ループを使用してノードの参照を変更することができます。

3.) データをソートするノードを使用して選択ソートを記述します。ノードは必ずしも移動する必要はありません。おそらくデータを切り替えるだけで済みます。

for(Node curr = this.head; curr != null; curr = curr.next)
    for(Node next = curr.next; next != null; next = next.next)

そんな感じ。

于 2013-01-01T01:09:24.050 に答える
0

標準のJava「リンクリスト」コレクションを使用していて、独自のコレクションを実装していないことを前提としています。

もしそうなら、あなたがしなければならないのは、JavadocやJavaコレクションに関するいくつものすばらしいチュートリアルを見るだけです。

例えば:

于 2013-01-01T00:54:01.920 に答える