最小堆创建以及过程中的疑惑
2017-12-10 19:34
92 查看
最小堆结构体
1、疑惑:用数组开辟了很多个存放data的空间,所以不用malloc空间,但是data是一个Edge类型的结构体,还需要申请空间吗
测试一下
在creatHeap函数里,直接赋值,(此时没有创建Edge的malloc),在main里边直接访问 H->data[1]->v1,出错了
错误点:需要给data申请Edge类型的空间
需要在creatHeap()里边加入
再在creatHeap()中写入下面代码,在主函数中调用这两个值,都可以调用了,说明真的要申请空间!!!
2、错误:出现程序错误,跑不起来,要想一想,是不是空间不够了,申请的空间够用了么
下面是最小堆的创建
typedef Edge ElementType_stack; struct HNode{ //最小堆里边的元素是边Edge ElementType_stack data[MaxVertexNum];//开辟好多好多个Edge类型的 int size;//堆中元素的个数 int capacity;//堆的最大容量 }; typedef struct HNode *minHeap;
1、疑惑:用数组开辟了很多个存放data的空间,所以不用malloc空间,但是data是一个Edge类型的结构体,还需要申请空间吗
测试一下
在creatHeap函数里,直接赋值,(此时没有创建Edge的malloc),在main里边直接访问 H->data[1]->v1,出错了
minHeap creatHeap(){ minHeap H=(minHeap)malloc(sizeof(struct HNode)); H->size=0;//当前的元素个数为0 H->capacity=MaxVertexNum;//最大的容量 //H->data[0]->weight=minData;//建立一个哨兵,小于堆中所有的元素 H->data[1]->v1=4; return H; }
错误点:需要给data申请Edge类型的空间
需要在creatHeap()里边加入
for(i=0;i<MaxVertexNum;i++){ H->data[i]=(Edge)malloc(sizeof(struct ENode)); }
再在creatHeap()中写入下面代码,在主函数中调用这两个值,都可以调用了,说明真的要申请空间!!!
H->data[0]->weight=minData;//建立一个哨兵,小于堆中所有的元素 H->data[3]->weight=4;
2、错误:出现程序错误,跑不起来,要想一想,是不是空间不够了,申请的空间够用了么
下面是最小堆的创建
相关文章推荐
- 静态、三大代码块以及对象的创建过程
- USB几种设备状态以及创建过程
- java加载类创建对象的过程以及静态代码段的执行时机
- 数据库之存储过程创建表以及for循环插入数据
- 二叉树的创建 前序 中序 后序遍历以及最大值与最小值的差
- Report.rdl创建以及部署过程
- 跨浏览器 创建xmlhttprequest 对象 以及和服务器交互的全过程
- 顺序栈(含有栈顶指针,栈底指针)的实现以及编写过程中的一些疑惑的解决
- Mysql存储过程的创建以及调用
- Oracle 创建存储过程以及PlSql 调用 存储过程
- VS2015单文档视图项目中文档、框架以及视图创建过程
- Hibernate读取配置文件,创建sessionFactory的执行过程以及用工具类优化
- 根据类Student的定义,创建五个该类的对象,输出每个学生的信息, 计算并输出这五个学生Java语言成绩的平均值,以及计算并输出他们Java语言成绩的最大值和最小值。
- msp430f1232最小系统以及调试过程。
- mysql-创建函数,存储过程以及视图
- Sql 存储过程 即返回结果集又返回值 以及动态创建视图
- cocoapods创建共有库过程中遇到的坑以及版本删除
- 在Activity中创建Handler发送消息以及接受消息过程浅析
- ReportView如何使用构造SQL语句带参数的存储过程创建报表以及为rdlc传递参数