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