首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C++中动态创建堆

在C++中动态创建堆
EN

Stack Overflow用户
提问于 2014-06-12 10:51:44
回答 3查看 1.4K关注 0票数 1

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

然而,我不知道从哪里开始,因为我不知道如何引用它们(名字?)以及如何储存它们。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-12 11:32:09

使用类似的东西

代码语言:javascript
运行
复制
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。

票数 0
EN

Stack Overflow用户

发布于 2014-06-12 11:04:56

我不知道从哪里开始,因为我不知道如何称呼他们(名字?)以及如何储存它们,所以我非常感谢你们的帮助。

考虑为堆创建类(所谓堆,我指的是二进制堆)。你应该把这门课变成半规则的(可复制的,可移动的,同等的).然后,将类的n个实例存储在std::vector中。

票数 0
EN

Stack Overflow用户

发布于 2014-06-12 11:07:03

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

您可以拥有一组堆,并根据它们的索引引用它们。

以及如何储存它们

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24182578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档