3

int size();Java で単一リンク リストのメソッドを作成するのに助けが必要です。

これは私がこれまでに持っているものですが、リストの正しいサイズを返しません。

public int size()
{
    int size = 0;
    Node CurrNode = head;
    while(CurrNode.next != null)
    {
        CurrNode = CurrNode.next;
        size++;     
    }
    return size;
}

Javaでこのメソッドを実装するのを手伝ってくれる人はいますか?

4

4 に答える 4

9

できる最大の改善は、Java コーディング規則を使用し、camelCase ローカル変数を使用することです。

このように書くことができます。

public int size() {
   int size = 0;
   for(Node n = head; n.next != null; n = n.next)
       size++;     
   return size;
}

Java で一般的に使用されるクラスを書き直しているので、より良い方法が必要な場合は、そこでどのように行われるかを確認することをお勧めします。

LinkedListから

/**
 * Returns the number of elements in this list.
 *
 * @return the number of elements in this list
 */
public int size() {
    return size;
}

ご覧のとおり、要素が追加されるとサイズが増加し、要素が削除されると id が減少するため、サイズを取得するためにリストをトラバースする必要がなくなります。

于 2012-09-27T08:30:42.180 に答える
4

最も簡単な方法は、サイズを追跡する変数を 0 で初期化することです。その後、ノードを追加するたびに、ノードを削除すると size++ または size-- になります。size() メソッドは、リストをトラバースせずにこの変数を返すだけです。

于 2012-09-27T08:30:12.267 に答える
1

メソッドにリストを渡し、 currNode!= null を確認する必要があります。

public static int size(Node currNode){
    int count = 0;
    while (currNode!= null){
        count++;
        currNode=currNode.getNext();
    }
    return count;
}
于 2015-07-05T20:55:35.257 に答える