我在将堆实现为数据结构时遇到了问题。我的任务是创建最初未知数量的堆,这些堆的大小也是未知的,稍后我将能够在这些堆上工作。二进制堆的数量及其大小将作为参数(一些stdin数据)给出,因此for
循环应该是合适的。此外,我必须尽可能少面向对象,因为这是算法类问题的一部分.
然而,我不知道从哪里开始,因为我不知道如何引用它们(名字?)以及如何储存它们。
发布于 2014-06-12 03:32:09
使用类似的东西
struct Heap
{
int *arr;
int count; //number of elements in heap
int capacity; //size of heap;
int heap_type; //min(0) or max(1)
};
然后,您可以定义堆,使用新/malloc动态分配堆,并初始化所有四个成员。
注意:您必须执行两个动态分配,一个用于堆,另一个用于数组arr。
发布于 2014-06-12 03:04:56
我不知道从哪里开始,因为我不知道如何称呼他们(名字?)以及如何储存它们,所以我非常感谢你们的帮助。
考虑为堆创建类(所谓堆,我指的是二进制堆)。你应该把这门课变成半规则的(可复制的,可移动的,同等的).然后,将类的n个实例存储在std::vector中。
发布于 2014-06-12 03:07:03
我不知道怎么称呼他们(名字?)
您可以拥有一组堆,并根据它们的索引引用它们。
以及如何储存它们
堆存储为平面数据数组。具有索引i
的节点的子节点是具有索引2*i
和2*i+1
的节点。
https://stackoverflow.com/questions/24182578
复制