在c++中动态创建堆

Creating heaps dynamically in C++

本文关键字:创建 动态 c++      更新时间:2023-10-16

我在实现堆作为数据结构时遇到了一个问题。我的任务是创建最初未知数量的堆,最初也未知大小,我将能够在以后的工作。二进制堆的数量及其大小将作为参数(一些标准数据)给出,因此for循环应该是合适的。此外,我必须尽可能少地面向对象,因为它是算法类问题的一部分……

但是,我不知道从哪里开始,因为我不知道如何引用它们(通过名称?)以及如何存储它们

使用

struct Heap
{  
int *arr;
int count;  //number of elements in heap
int capacity;  //size of heap;
int heap_type;  //min(0) or max(1)
};

然后你可以定义堆,使用new/malloc动态分配它,并初始化所有四个成员。

注意:你必须做两个动态分配,一个为堆,另一个为数组arr。

我不知道从哪里开始,因为我不知道如何引用它们(通过名称?)以及如何存储它们,所以我将非常感谢你们的任何帮助。

考虑为堆(这里的堆是指二进制堆)创建一个类。您应该将这个类设置为半规则类型(可复制、可移动、具有同等可比性)。然后,在std::vector中存储n个类的实例。

我不知道怎么称呼他们(名字?)

你可以有一个堆数组,并通过索引

来引用它们

和如何存储它们

堆存储为数据的平面数组。索引为i的节点的子节点为索引为2*i2*i+1的节点