在哈希表中找到最大值,然后打印具有该值的所有变量(在C中)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在哈希表中找到最大值,然后打印具有该值的所有变量(在C中)相关的知识,希望对你有一定的参考价值。

具有这样的结构:

typedef struct person {
    char *name;
    int age;
} person

我在哈希表中插入我创建的每个人,而我想要做的就是找到最老的人,像这样:

Oldest People:
Austin 29
John 29
Matthew 29

我想知道是否有比两次搜索哈希表更有效的方法来找到最大年龄:一种方法是找到最大值,另一种方法是将所有带有最大值的人打印出来。

答案

您可以在插入时确定最大年龄。无论如何,您都需要该if子句,但是通过这种方式,您可以节省遍历哈希表的时间。

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

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

以上是关于在哈希表中找到最大值,然后打印具有该值的所有变量(在C中)的主要内容,如果未能解决你的问题,请参考以下文章

如何映射字符串列表和整数列表,并找到具有最大值的字符串

SQL删除存在值的行和具有该值的后续列

在 Perl 中如何使用变量作为哈希键?

mysql 重新整理——索引简介[七]

mysql 重新整理——索引简介[七]

如何指向链表中的下一个节点并打印该值