gpt4 book ai didi

java - 如何实现每个节点都是一个类的堆?

转载 作者:行者123 更新时间:2023-11-30 04:58:11 27 4
gpt4 key购买 nike

我想创建一个堆结构,每个节点有2个数据,1) string 2) int所以我认为每个节点必须是一个名称为“heapNode”的类,但我在交换方法中遇到麻烦,请帮助我

import java.util.ArrayList;
public class MainHeap {
ArrayList<heapNode> heap;

MainHeap (){
new ArrayList<heapNode>();
}

public int getMin(){
return heap.get(0).data ;
}

private int parent(int pos) {
return pos / 2;
}

private void swap(int pos1, int pos2) {
heapNode temp =new heapNode();

temp = heap.get(pos1);
heap.get(pos1) = heap.get(pos2);
heap.get(pos2) = temp;
}
public void insert(int elem) {

int max = heap.size();
heap.get(max).data = elem ;
int current = heap.size() ;
while (heap.get(current).data < heap.get(parent(current)).data){
swap ( current , parent(current));
}

}

}

这是我的 heapNode 类

public class heapNode {
int data;
String fileName;
}

交换方法有错误,但我无法解决错误

最佳答案

您的交换代码实际上使对象指向不同的对象。它不会修改数组列表本身的位置。如果使用 arraylist,您必须从索引中删除一个对象并将该对象设置在新索引处以进行交换,否则您可以使用其他数据结构。

关于java - 如何实现每个节点都是一个类的堆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7831905/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com