-2

次の操作のために、1から1000(繰り返しなし)の範囲の整数のデータ構造を設計します。 1)挿入

2)削除

3)検索

4)int Anyvalid()->これは、その時点で存在する有効な/現在の番号を返す必要があります。 たとえば、1,5,7が存在する場合、3つの数値のいずれかを返します。

すべての操作は0(1)/一定時間である必要があります。

私はビットベクトルについて考えましたが、AnyvalidElement()の場合は0(n)になります。残りの部分は、0(1)で機能します。

4

1 に答える 1

3

二重にリンクされたリストとリストノードへのポインタの配列を使用します。

  • nの挿入:リストの先頭にnを追加します。array[n]=新しく追加されたノードへのポインタ。
  • nの削除:配列を使用して、リスト内の正しいノードにジャンプし、それを削除します。配列[n]=NULLを設定します。
  • nを検索:array [n]!=NULLかどうかを確認します
  • AnyValid:リストの先頭に戻る
于 2013-02-28T14:13:21.323 に答える