C 在没有数组的优先级队列上实现插入和删除功能?

C 在没有数组的优先级队列上实现插入和删除功能?,c,data-structures,queue,heap,priority-queue,C,Data Structures,Queue,Heap,Priority Queue,我需要在不使用数组的情况下实现优先级队列。 我试图使用二进制堆(minheap)实现它,但在插入新元素时遇到了麻烦。使用数组时,我只需要将新元素附加到数组的末尾,并将其放在前面,但如果没有数组,我必须注意插入它的位置,因为二叉树可能会变得非常不平衡 我想知道这个二进制堆的解决方案,它没有数组或其他数据结构用作最小堆 我需要实现插入和删除的函数(可以是堆中的Min元素或其他元素)。 同样的问题,但没有回答: 感谢用于此任务的常见数据结构是斐波那契堆或二项式堆: 您可以将堆实现为树。这可能会有所帮

我需要在不使用数组的情况下实现优先级队列。 我试图使用二进制堆(minheap)实现它,但在插入新元素时遇到了麻烦。使用数组时,我只需要将新元素附加到数组的末尾,并将其放在前面,但如果没有数组,我必须注意插入它的位置,因为二叉树可能会变得非常不平衡

我想知道这个二进制堆的解决方案,它没有数组或其他数据结构用作最小堆

我需要实现插入和删除的函数(可以是堆中的Min元素或其他元素)。 同样的问题,但没有回答:


感谢

用于此任务的常见数据结构是斐波那契堆或二项式堆:


您可以将堆实现为树。这可能会有所帮助,它很好地描述了如何实现左倾堆树结构。请注意,这是一门大学课程,因此将来可能会发生变化。也许您可以使用或链接列表?使用链接列表实现堆的速度很慢。因为插入一个元素是O(n)。