2

首先,我想提一下这个问题是一个家庭作业问题。我一直在考虑实施很长时间。

我必须考虑并实现一个具有以下功能的库软件:

  1. 添加/删除新订阅者。
  2. 借/还书。
  3. 以下订阅者有什么书?
  4. 哪个订户持有以下书?
  5. 拥有最多书籍的订阅者列表。

我想过实现一个堆和2个红黑树,问题是空间复杂度很高。所以我想知道我是否遗漏了什么。

订户由 I.D 存储,书籍有代号。一棵红黑树是给订户的,另一棵是给借来的。堆是一个最大堆,以实现最后一个要求。

除了数据结构,我不能使用其他任何东西。

感谢您的任何见解和答案。

4

1 回答 1

0

我猜你也可以使用容器,比如结构?利用:

  • 书籍的一个哈希集/哈希表:
    另外存储一个标志,该标志确定书籍是否被借以及它被借给的订户。
  • 来自订阅者-> 图书链接列表的哈希映射,不仅存储所有订阅者,还存储他们借过的图书。

这允许您在 O(1) 中执行所有列出的任务,除了按订阅者借阅的书籍数量对订阅者进行排序。

于 2011-02-13T04:41:41.587 回答