在散列 table 中找到最大值,然后打印具有该值的所有变量(在 C 中)
find the maximum value in a hash table and then printing all the variables with that value (in C)
有这样的结构:
typedef struct person {
char *name;
int age;
} person
我将我创建的每个人都插入到一个散列中 table,我想做的是找到最老的人,就像这样:
Oldest People:
Austin 29
John 29
Matthew 29
我想知道是否有比搜索散列 table 两次更有效的查找最大年龄的方法:一次查找最大值,另一次打印所有具有最大值的人。
您可以在插入时确定最大年龄。无论如何你都需要那个 if 子句,但是这样你就可以节省遍历哈希 table 的时间。
除此之外,你没有说你的散列的键是什么table。我想,这是名字,因为你没有提到解决年龄冲突,你提到需要第二次通过。
而且我猜你的散列 table 的目的不仅仅是解决这个问题。但如果是,我不会使用散列 table,而只是保留一个具有当前最大年龄的名称列表,并在最大年龄发生变化时立即重置它。如果您知道最大大小,则该列表可以实现为数组 + 大小变量,否则例如带有固定大小块的链表。
有这样的结构:
typedef struct person {
char *name;
int age;
} person
我将我创建的每个人都插入到一个散列中 table,我想做的是找到最老的人,就像这样:
Oldest People:
Austin 29
John 29
Matthew 29
我想知道是否有比搜索散列 table 两次更有效的查找最大年龄的方法:一次查找最大值,另一次打印所有具有最大值的人。
您可以在插入时确定最大年龄。无论如何你都需要那个 if 子句,但是这样你就可以节省遍历哈希 table 的时间。
除此之外,你没有说你的散列的键是什么table。我想,这是名字,因为你没有提到解决年龄冲突,你提到需要第二次通过。
而且我猜你的散列 table 的目的不仅仅是解决这个问题。但如果是,我不会使用散列 table,而只是保留一个具有当前最大年龄的名称列表,并在最大年龄发生变化时立即重置它。如果您知道最大大小,则该列表可以实现为数组 + 大小变量,否则例如带有固定大小块的链表。