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

データ構造のスキップリスト


スキップリストでは、このポイントaから検索を続行するだけで、要素bを含むノードから要素aを指で検索できます。

a bの場合、検索は順方向に進むことに注意してください。

後方の場合はスキップリストでの通常の検索と対称的ですが、前方の場合は実際にはもっと複雑です。

通常、スキップリストでの検索は、リストの先頭にある番兵が最も高いノードと見なされるため、高速であると予想されます。

ただし、指を高さ1のノードに関連付けることができます。このため、検索中に登ることはめったにありません。通常は発生しない何か。

スキップリストの最も重要なプロパティは、期待される線形空間を必要とし、期待されるO(log n)レベルを含み、期待されるO(log n)時間での検索をサポートし、期待されるO(1)の特定の位置での挿入と削除をサポートすることです。 )時間。

スキップリストが予想されるO(log d)時間で指検索をサポートする方法の擬似コードを含む、スキップリストのさまざまなプロパティと拡張機能について詳しく説明しました。後方指検索を容易にするために、ノードVへの指は期待されるO(log n)スペース指データ構造として格納され、各レベルiについて、レベルiポインターが指すVの左側のノードへのポインターを格納します。 VまたはVの右側のノード。指を動かすには、それに応じてこのポインタのリストを更新する必要があります。

後方指検索は、最初に検索キーyの左側にある指データ構造の最下位ノードを識別することによって実行されます。ここで、指データ構造のノードはレベルの昇順で考慮されます。

その後、検索は、標準のスキップリスト検索と同様に、識別されたノードから下に進みます。


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

    配列表現は、時間の経過とともに変化するデータを格納する場合、基本的にスペースを浪費します。一部のデータを格納するために、配列に複数の値を格納するのに十分な大きさのスペースを割り当てます。配列のサイズを大きくするために、配列の倍増基準を使用するとします。 現在のアレイサイズが8192であると考えてください。これはいっぱいです。したがって、配列ダブリング手法を使用してそれを増やす必要があります。したがって、新しい配列サイズは16384になります。次に、8192要素を古い配列から新しい配列にコピーしてから、古い配列の割り当てを解除します。これで、古い配列のスペースの割り当てを解除する前に、配列サイ

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

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