プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

データ構造内の単一配列内の複数のリスト


配列表現は、時間の経過とともに変化するデータを格納する場合、基本的にスペースを浪費します。一部のデータを格納するために、配列に複数の値を格納するのに十分な大きさのスペースを割り当てます。配列のサイズを大きくするために、配列の倍増基準を使用するとします。

現在のアレイサイズが8192であると考えてください。これはいっぱいです。したがって、配列ダブリング手法を使用してそれを増やす必要があります。したがって、新しい配列サイズは16384になります。次に、8192要素を古い配列から新しい配列にコピーしてから、古い配列の割り当てを解除します。これで、古い配列のスペースの割り当てを解除する前に、配列サイズが8192の3倍であることがわかります。2倍のサイズの新しい配列と古い配列。それはあまり良いアプローチではありません。

複数のリストを保存する場合は、新しいリスト用に新しい配列を作成する代わりに、より大きな配列を共有できます。 1つの配列内の複数のリストは次のようになります-

データ構造内の単一配列内の複数のリスト

単一配列の複数リストはメモリ効率が良いですが、いくつかの問題もあります。ここでは、挿入操作はより高価です。現在のリストに要素を挿入するには、他のリストに属する要素を移動する必要がある場合があるためです。また、表現の実装も困難です。


  1. データ構造の区間木

    このセクションでは、区間木とは何かを確認します。名前が示すように、区間木は区間に関連付けられている木です。したがって、区間木について説明する前に、基本的な区間を見てみましょう。 間隔は基本的に範囲です。したがって、1つの間隔が[a、b]と記述されている場合、範囲がaから始まり、bで終わることを示します。 ここで、間隔[10、20]があるとします。したがって、3つの範囲値があります。最初は-∞から10、10から20、最後は20から∞ ここで、[15、25]から2番目の間隔を作成するとします。したがって、これは次のようになります- [18、22]から別の間隔を作ると、次のようにな

  2. ハーフエッジデータ構造

    はじめに テンプレートパラメータまたはハーフエッジデータ構造(HalfedgeDSと略記)のHDSは、平面マップ、多面体、またはその他の方向付け可能な2次元など、頂点、エッジ、および面の入射情報を維持できるエッジ中心のデータ構造として定義されます。ランダムな次元に埋め込まれたサーフェス。各エッジは、反対方向の2つのハーフエッジに分割されます。各ハーフエッジには、1つの入射面と1つの入射頂点が格納されます。各面と各頂点に1つの入射ハーフエッジが格納されます。ハーフエッジデータ構造のバリエーションを減らすと、面のハーフエッジポインタや面の保存など、この情報の一部を削除できます。 ハーフエッジデ