【发布时间】:2011-01-01 01:00:15
【问题描述】:
我的作业是Introduction to Algorithms 练习11.1-3,内容如下:
建议如何实现一个直接访问表,其中存储元素的键不需要是不同的,并且元素可以有卫星数据。所有三个字典操作(插入、删除和搜索)都应该在 O(1) 时间内运行。不要忘记,Delete 将指向要删除的对象的指针作为参数,而不是键。
好吧,插入是没有问题的,因为它只是意味着在表中的适当位置创建一个链表(如果它不存在)并将元素添加到其中。 search,给定一个key,可以返回任何匹配key的元素,所以简单的说我们需要返回table中匹配列表的头部。
我的问题是删除操作。如果我修改对象以向其添加指向其在链表中的节点的指针,那么我可以在 O(1) 中删除,但我不确定我是否可以更改该对象.有没有办法在不改变给定对象的情况下做到这一点?
【问题讨论】:
-
+1 用于发布带有披露的家庭作业问题并表明您已经尝试过某些事情。欢迎来到 SO
-
标准的普通链表不会给你 O(1) 的搜索性能。
-
@GregS - 我说过我可以返回具有匹配键的任何元素,这意味着我可以返回列表的头部,即 O(1)。
-
元素可以有卫星数据,这到底是什么意思?
-
如果这意味着元素可以附加数据,那么您可以为对象附加一个指向链表节点的指针,删除变得微不足道
标签: algorithm hash hashtable clrs