[英]Java Heap Implementation
您将从以下接口实现堆:
public interface Heap<V extends Comparable<V>> {
public void add(V value);
public V[] toArray(V[] array);
public V remove();
public void fromArray(V[] array);
public V[] getSortedContents(V[] array);
}
但是, 堆应该实现为节点堆 ,即内部实现应该是树而不是数组。 getSortedContents方法应在内部将堆转换为其数组表示形式,并对其执行Heap-Sort ,然后将数组作为结果返回。
这个提示让我有些困惑。 我的问题是这到底要我做什么? 我无法理解提示。 是否只想创建一个实现Heap的名为NodeHeap.java的类?
更新:我的NodeHeap类会看起来像这样吗? 还是我完全错了
public class NodeHeap<V> implements Heap<V> {
@Override
public void add(V value) {
}
@Override
public V[] toArray(V[] array) {
return null;
}
@Override
public V remove() {
return null;
}
@Override
public void fromArray(V[] array) {
}
@Override
public V[] getSortedContents(V[] array) {
return null;
}
}'
这个问题的主要问题似乎是数据内部存储在树中(我假设是堆树 ),而不是使用array / list实现 。 实际上,我将节点堆作为“由节点实现的堆”,但是它也可以作为类名正常工作。
尽管您可以在一个类中实现它,但考虑到Java在Swing包中只有一个树模型这一事实, 实现您自己的树是很常见的,它肯定涉及更多的类(可以是内部的或匿名的)。 这个问题似乎并不介意。
更新:该代码看起来是一个不错的开始,假设您完成后实际上不会返回null。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.