繁体   English   中英

Java堆实现

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM