关于数组

来源:4-3 Shift Up

BSJ_dong2020

2021-04-22

data[count + 1]=item;这里数组越界的原因及解决方法没有理解,请在详细介绍一下。

写回答

1回答

liuyubobobo

2021-04-22

抱歉,我没有特别理解你不理解的点。是认为在什么情况下,这个代码会发生错误?还是认为在什么情况下,这个代码你觉得应该如何执行,可实际却是如何执行的?你没有理解?

0
2
liuyubobobo
回复
BSJ_dong2020
如果向堆里添加超过 capacity 个元素会报错。在这一版代码中,定义的 capacity 无法解决数组越界,它只是告诉用户,这个对最多盛放 capacity 个元素。这就像定义一个 int arr[10],只是告诉用户这个数组索引范围是 0-9,当访问 arr[10] 的时候,是不安全的(在 Java 中报越界错误)。归根到底是因为这个课程的堆,是使用静态数组实现的。如果想取消这个限制,需要使用动态数组。我的另外一个课程的堆使用动态数组实现,将没有这个限制。感兴趣可以参考这个代码(Java):https://github.com/liuyubobobo/Play-with-Data-Structures/blob/master/08-Heap-and-Priority-Queue/05-Heapify-and-Replace-in-Heap/src/MaxHeap.java
2021-04-23
共2条回复

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11186 学习 · 1614 问题

查看课程