簡體   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