Skip to content

C++ Code

/* The heap class. This is heap.h file */ 
template <class eType>
class Heap {
    public:
        Heap(int capacity = 100);
        void insert(const eType& x);
        void deleteMin(eType& minItem); 
        const eType& getMin(); 
        bool isEmpty();
        bool isFull();
        int Heap<eType>::getSize();

    private: 
        // The heap array 
        eType* array; 
        // Number of elements in heap 
        int currentSize;
        int capacity;
        void percolateDown(int hole);
};
#include <Heap.h>

template <class eType>
Heap<eType>::Heap(int capacity) {
    array = new eType[capacity + 1];
    currentSize = 0;
}

template <class eType>
bool Heap<eType>::insert(const eType& x) {
    if (isFull()) {
        std::cout << "insert - Heap is full" << std::endl;
        return 0;
    }

    //percolate up
    int hole = ++currentSize;
    for (; hole > 1 && x < array[hole / 2]; hole /= 2)
        array[hole] = array[hole / 2];
    array[hole] = x;
}