c语言 priority_queue
时间: 2023-10-29 16:00:07 浏览: 126
C语言中没有内置的priority_queue数据结构。如果你想使用优先队列,你需要自己实现它或使用第三方库。
自己实现优先队列可以使用数组或链表来存储元素,并在插入和删除操作中保持元素的有序性。你可以使用堆的数据结构来实现这个目标。堆是一种完全二叉树,并且父节点的值总是大于或等于(最大堆)或小于或等于(最小堆)其子节点的值。
使用第三方库是更简单和常见的选择。一些常用的C语言库,如Glib(GNU C Library)、Libraries like Glib(GNU C Library)、libpqueue和libpq都提供了优先队列的实现。
下面是一个使用Glib库实现优先队列的示例:
```c
#include <glib.h>
int compare_int(gconstpointer a, gconstpointer b, gpointer user_data) {
int value_a = *(int*)a;
int value_b = *(int*)b;
if (value_a > value_b) {
return 1;
} else if (value_a < value_b) {
return -1;
} else {
return 0;
}
}
int main() {
GQueue* queue = g_queue_new();
int value1 = 42;
int value2 = 11;
int value3 = 78;
// 插入元素到队列中
g_queue_insert_sorted(queue, &value1, compare_int, NULL);
g_queue_insert_sorted(queue, &value2, compare_int, NULL);
g_queue_insert_sorted(queue, &value3, compare_int, NULL);
// 从队列中弹出元素
while (!g_queue_is_empty(queue)) {
int* value = g_queue_pop_head(queue);
printf("%d\n", *value);
g_free(value);
}
g_queue_free(queue);
return 0;
}
```
请注意,这只是一个简单的示例,你可以根据自己的需求进行修改和扩展。
阅读全文
相关推荐















