0

私のLinkedListは単独でリンクされています(各ノードにはカウント+次の参照があります)。

LinkedList を受け取り、新しいノードを作成せずにランレングスでエンコードされたバージョンのリストを返す runlengthencode メソッドを作成する必要があります。たまたま Java にあります

私が抱えている問題は、新しいリストに表示される実行の開始を表すノードを追跡することです。以下の外側のwhile ループのどこに rle ノードを追加すればよい ですか?

現在、CurrRun と CurrRun と呼ばれるリファレンスと CurrRun から移動するランナーがありますが、CurrRun と CurrRun.next の値は同じです。

注意: このコードは、見苦しい Java 構文を可能な限り取り除いています。

//instantiated nodes here

currRun = myListHead.next
Node runner = currRun

while (currRun.next != null){

   int count = 1;

   while (runner.value == runner.next.value){
     count++
     runner = runner.next
   //no more runs in current run
   //update currRun count
   currRun.count = count

   //move currRun to next run node
   currRun = runner.next
   }

}
// return the myHead-> currNode1 -> currNode2 -> .... -> null
return myHead

どんなポインタでも大歓迎です。

MOAN: アメリカン ビッグ スクールでは、これを教えてくれるはずですが、私たちは自分のやり方に任されています。

4

1 に答える 1

0

結果を に書き戻すことはしませんcurrRun。代わりに、リストの n 番目のノードへのポインターを保持し、n 番目の実行をそのノードに書き戻します。そうすれば、新しく rle エンコードされたリストが連続し、どのノードが実行の開始を表し、どのノードがそうでないかを心配する必要がなくなります。

于 2012-07-30T06:10:51.417 に答える