2

まず、宿題の質問です。私は十分長い間、実装について熟考してきました。

次の機能を備えたライブラリソフトウェアを考えて実装する必要があります。

  1. 新しいサブスクライバーを追加/削除します。
  2. 本を借りる/返す。
  3. 次の購読者はどの本を持っていますか?
  4. 次の本を持っている加入者は誰ですか?
  5. ほとんどの本を持っている購読者のリスト。

ヒープと2つの赤黒木を実装することを考えましたが、問題はスペースの複雑さが高いことです。だから私は何かが足りないのだろうかと思っていました。

購読者はIDによって保存され、本にはコードネームがあります。1つの赤黒木は購読者用で、もう1つは借りた本用です。ヒープは、最後の要件を実装するための最大ヒープです。

データ構造以外は使えません。

洞察と回答ありがとう。

4

1 に答える 1

0

構造体のようなコンテナも使用できると思いますか?使用する:

  • 書籍用の1つのハッシュセット/ハッシュテーブル:
    さらに、書籍が借用されているかどうか、および借用されているサブスクライバーを決定するフラグを格納します。
  • 購読者->リンクされた本のリストからの1つのハッシュマップ。すべての購読者だけでなく、どの本を借りたかも保存します。

これにより、借りた本の数で購読者を並べ替えることを除いて、O(1)にリストされているすべてのタスクを実行できます。

于 2011-02-13T04:41:41.587 に答える