클래스를 사용하여 텍스트 북에이 바이너리 힙 구현 코드가 있습니다. 그러나 나는 힙을 만들 때 열쇠의 필요성을 이해하지 못합니다.바이너리 힙의 키 기능
#define MAXREAL 999999.0
class HeapItem
{
public:
int data; //actual data that is stored
float key; //key value of the data, heap is constructed based on key
};
class MinHeap
{
public:
HeapItem * A; //stores heap items, e.g., nodes
int heapLength;
int * map;
MinHeap() //constructor
{
A = new HeapItem[MAX_HEAP_SIZE];
map = new int[MAX_HEAP_SIZE];
heapLength = 0;
}
//Fills the heap with an array of integers
//key values do not maintain heap property
//May be used in some algorithms such as dijkstra's shortest path
void initialize(int v[], int n)
{
heapLength = n;
for (int i = 0; i<n; i++) //nodes are stored from index 1 instead of 0 in the heap
{
A[i + 1].data = v[i];
A[i + 1].key = MAXREAL;
map[v[i]] = i + 1; //map tracks which vertex is stored at which heap node
}
}
}
MinHeap에서 키와지도의 기능은 무엇입니까? 키가 아무것도하지 않는 사용자의 경우
'키'필드의 목적이 무엇인지 말할 수 없습니다. 사용 방법을 볼 수 있도록 코드를 조금 더 줄 수 있습니까? –