【发布时间】:2014-11-30 03:54:35
【问题描述】:
我被分配在 SML 中为此哈希表数据类型编写查找函数;
datatype 'a ht = table of (int * ('a list)) list;
如果表为空和/或键不存在表,则返回 nil。 函数应该是这样的
val lookup = fn : int -> 'a ht -> 'a list
但我不知道如何查看哈希表的每个存储桶或显示键存储桶的值。对于使用哪种算法,我将不胜感激。
例如函数应该像这样工作;
-lookup 3 (table [(1, [2,3]), (2, [3,4,5]), (3, [4])]);
val it = [4] : int list
-lookup 4 (table [(1, [2,3]), (2, [3,4,5]), (3, [4])]);
val it = [] : int list
【问题讨论】:
-
我尝试使用 find 函数来简化它:有趣的查找键 nil = false | find key (x::rest) = if key = x then true else find key (rest);但显然这是一个列表,不接受哈希表类型。我正在寻找一种将其应用于哈希表的方法。然后以某种方式打印键的值(如果存在)。
-
先写一个在int列表中查找int的函数