ホームページ >バックエンド開発 >C++ >C++ を使用して、リンク リスト内の各ノードをその超過数に置き換えます。

C++ を使用して、リンク リスト内の各ノードをその超過数に置き換えます。

王林
王林転載
2023-09-06 13:25:11867ブラウズ

C++ を使用して、リンク リスト内の各ノードをその超過数に置き換えます。

リンク リストが与えられた場合、指定されたリンク リスト内で現在の要素の右側より大きい要素を見つける必要があります。これらの要素の数を現在のノードの値に代入する必要があります。

次の文字を含むリンク リストを取得し、各ノードをその超過数に置き換えてみましょう -

4 -> 6 -> 1 -> 4 -> 6 -> 8 -> 5 -> 8 -> 3

逆方向に開始して、リンクされたリストをたどります (そのため、左側の現在の要素について心配する必要はありません)。データ構造は、現在の要素をソートされた順序で追跡します。ソートされたデータ構造内の現在の要素を、その上の要素の合計数で置き換えます。

再帰的方法により、リンクされたリストが逆方向に走査されます。別のオプションは PBDS です。 PBDS を使用すると、特定のキーより厳密に小さい要素を見つけることができます。現在の要素を追加したり、厳密に小さい要素からそれを減算したりできます。

PBDS では要素の重複は許可されません。ただし、カウントするには繰り返し要素が必要です。各エントリを一意にするために、PBDS にペアを挿入します (最初 = 要素、2 番目 = インデックス)。現在の要素と等しい要素の合計を見つけるには、ハッシュ マップを使用します。ハッシュ マップには、各要素の出現数が格納されます (基本的な整数間のマッピング)。

###例###

以下は、リンクリスト内の各ノードをその超越数に置き換える C プログラムです -

リーリー ###出力### リーリー

イラスト

つまり、最初の要素の要素 = [65, 46, 68, 85, 59, 85]、つまり 6

2 番目の要素、要素 = [68, 85, 85]、つまり 3

すべての要素について以下同様です

###結論は###

この質問には、データ構造と再帰についての一定の理解が必要です。メソッドをレイアウトし、観察と知識に基づいて、ニーズを満たすデータ構造を導き出す必要があります。この記事が気に入ったら、続きを読んでお待ちください。

以上がC++ を使用して、リンク リスト内の各ノードをその超過数に置き換えます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。