C 我需要一个建议,以优化实施的程序与优先队列和搜索

C 我需要一个建议,以优化实施的程序与优先队列和搜索,c,pointers,queue,adt,C,Pointers,Queue,Adt,我必须制作一个程序,从文件中读取医院的患者名单,每个患者都有优先权 所以我决定在二进制堆中设置优先级队列,因为插入和删除是O log(n),而获得要治疗的患者是O(1),这对于这个程序来说已经足够了。我将堆存储在指向struct patient的指针的动态数组中。这个很好用 但我也必须能够通过他的安全号码找到患者,而这在一堆中是不可能的(到目前为止我知道) 所以我想制作一个哈希表,当我将一个病人添加到堆中时,hi也将被添加到哈希表中(所有这些工作都与指针有关) 这是一个很好的方法吗?或者我必须重

我必须制作一个程序,从文件中读取医院的患者名单,每个患者都有优先权

所以我决定在二进制堆中设置优先级队列,因为插入和删除是O log(n),而获得要治疗的患者是O(1),这对于这个程序来说已经足够了。我将堆存储在指向struct patient的指针的动态数组中。这个很好用

但我也必须能够通过他的安全号码找到患者,而这在一堆中是不可能的(到目前为止我知道)

所以我想制作一个哈希表,当我将一个病人添加到堆中时,hi也将被添加到哈希表中(所有这些工作都与指针有关)

这是一个很好的方法吗?或者我必须重新考虑要使用的数据结构,并使用另一个ADT重新制作程序?(请不要)

结构的代码:

typedef struct patient {
  char name[20];
  char lastName[20];
  char securityNumber[20];
  char birthDate[8];
  int priority;
}PATIENT;

typedef struct binary_heap{
  PAT** patHeap;
  int n;
}HEAP;
在堆和哈希表中插入和删除就足够了。但是拥有更多的指针意味着需要使用更多的内存

这是我第一次制作这种“真正的节目”,所以如果你们能给我一些建议,我将非常感激


谢谢

问题:如何通过社保号码选择患者

如果社会保险号是用于在链表中创建节点的结构中的字段。简单地从链表的头指针开始,一步一步地遍历链表。在链接列表中的每个节点上,将目标社会保险号与节点中的条目进行比较。找到匹配项后,指向该节点的指针将指向所需的患者

不过,请了解一些社会保险号码。例如,它们不是#########################################c,在这里

if you had posted the code, 
then we could post matching code 
for the function that finds a patient 
via their social security number.

BTW:
a patients social security number is a bit of sensitive information. 
so the code should encrypt that field.

太多的代码了,我不知道怎么发布。但我知道我张贴了结构。我考虑过了,但我正在努力避免线性搜索或比O log(n)更糟糕的搜索。我想我会在数组中使用二进制搜索,谢谢你的帮助!