繁体   English   中英

在 hash 表中找到最大值,然后打印具有该值的所有变量(在 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

我将我创建的每个人插入到 hash 表中,我想做的是找到最年长的人,如下所示:

Oldest People:
Austin 29
John 29
Matthew 29

我想知道是否有比搜索 hash 表两次更有效的方法来找到最大年龄:一次找到最大值,另一个打印所有具有最大值的人。

您可以在插入时确定最大年龄。 无论如何你都需要那个 if 子句,但这样你就可以省去 hash 表的麻烦。

除此之外,您没有说 hash 表的密钥是什么。 我想,这是名字,因为你没有提到解决年龄冲突,你提到需要第二次通过。

而且我猜您的 hash 表的目的不仅仅是解决这个问题。 但如果是这样,我不会使用 hash 表,而只是保留当前最大年龄的名称列表,并在最大年龄更改后立即重置它。 如果您知道最大大小,则可以将列表实现为数组 + 大小变量,否则例如使用固定大小块的链表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM