我需要一个关于优先队列和搜索程序最佳实施的建议
I need an advice for optimal implementation of a program with priority queue and search
我必须编写一个程序来从文件中读取医院的病人名单,每个病人都有优先权。
所以我决定把优先级队列做成一个二叉堆,因为插入和删除是O log(n),而获取待治疗的病人是O(1),对于这个程序来说已经足够好了。我将堆存储在指向 struct patient 的动态指针数组中。这很好用。
但我还必须能够通过他的安全号码找到病人,这在堆中是不可能的(到目前为止我知道)。
所以我想做一个散列 table ,当我将患者添加到堆时, hi 也将被添加到散列 table (所有这些工作都是用指针) .
这是进行下去的好方法吗?或者我必须重新考虑要使用的数据结构并使用另一个 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;
在堆和散列中插入和删除就足够了table。但是指针越多,使用的内存就越多。
这是我第一次做这种"real programs"所以如果你们能提供任何建议我将非常感谢。
谢谢!
问题:如何通过社会安全号码select患者?
如果社会安全号码是结构中的一个字段,用于在链表中创建节点。只需从链表的头指针开始,一步一步地遍历链表。在链表中的每个节点,将目标社会安全号码与节点中的条目进行比较。找到匹配项后,指向该节点的指针将指向所需的患者。
但是,了解一下社会安全号码。例如,它们不是###-##-####,而是###-##-####c,现在很少使用最后的'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),而获取待治疗的病人是O(1),对于这个程序来说已经足够好了。我将堆存储在指向 struct patient 的动态指针数组中。这很好用。
但我还必须能够通过他的安全号码找到病人,这在堆中是不可能的(到目前为止我知道)。
所以我想做一个散列 table ,当我将患者添加到堆时, hi 也将被添加到散列 table (所有这些工作都是用指针) .
这是进行下去的好方法吗?或者我必须重新考虑要使用的数据结构并使用另一个 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;
在堆和散列中插入和删除就足够了table。但是指针越多,使用的内存就越多。
这是我第一次做这种"real programs"所以如果你们能提供任何建议我将非常感谢。
谢谢!
问题:如何通过社会安全号码select患者?
如果社会安全号码是结构中的一个字段,用于在链表中创建节点。只需从链表的头指针开始,一步一步地遍历链表。在链表中的每个节点,将目标社会安全号码与节点中的条目进行比较。找到匹配项后,指向该节点的指针将指向所需的患者。
但是,了解一下社会安全号码。例如,它们不是###-##-####,而是###-##-####c,现在很少使用最后的'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.