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

发布于 2024-12-11 05:25:46 字数 1079 浏览 0 评论 0原文

我想创建一个堆结构,每个节点有 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;
}

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

I want to crate a Heap structure that each node have 2 data , 1) string 2) int
so i think that each node must be a Class that's name is "heapNode" , but i have a trouble in swap method ,
please help me

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));
            }

        }

}

and this is my heapNode class

public class heapNode {
    int data;
    String fileName;
}

the swap method has error but i cant solve errors

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

放血 2024-12-18 05:25:46

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

Your swap code actually makes the objects point to different objects. It does not modify the positions in the arraylist itself. If using arraylist, you will have to remove an object from an index and set that object at a new index to swap or else you can use other data structure.

丢了幸福的猪 2024-12-18 05:25:46

java.util.PriorityQueue

java.util.PriorityQueue<YourClass>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文