우선순위 큐는 특정 조건에 따라 우선순위를 부여하여 데이터를 저장하는 데이터 구조입니다. 주로 힙(Heap)을 사용하여 구현되며, 최소 우선순위 큐와 최대 우선순위 큐가 있습니다. 이 데이터 구조는 Dijkstra 알고리즘, A* 탐색 알고리즘 등에서 사용됩니다.
<queue> 헤더에 priority_queue를 제공하지만, 이것은 C++의 일부입니다.#include <stdio.h>
#include <stdlib.h>
// A simple max heap example in C
typedef struct {
int *data;
int size;
int capacity;
} MaxHeap;
void push(MaxHeap *heap, int val) {
// ... push logic here
}
int pop(MaxHeap *heap) {
// ... pop logic here
return 0; // Placeholder
}
int main() {
MaxHeap heap;
// ... initialize and use the heap
return 0;
}
heapq 모듈을 사용하여 우선순위 큐를 쉽게 구현할 수 있습니다.heapq는 최소 힙만을 지원하기 때문에 최대 힙을 사용하려면 부호를 반대로 취해야 합니다.import heapq
# Using heapq module in Python
min_heap = []
heapq.heappush(min_heap, 3)
heapq.heappush(min_heap, 1)
heapq.heappush(min_heap, 4)
# Pop the smallest element
smallest = heapq.heappop(min_heap)