一.建立最小堆:
templateclass heap
heap(const t* array,size_t size)
_createheap();
}private:
//實現最小堆
void _createheap() }
//向下調整
void _adjustdown(size_t parent)
else
} }}
二.插入元素:
//插入元素
void push(size_t data)
三.刪除元素:
//刪除元素
void pop()
四.判斷堆是否為空:
//判斷堆是否為空
bool empty()const
五.求堆的大小:
//求堆的大小
size_t size()const
六.取堆頂元素:
//取堆頂層元素
t top()
完整**:
#include#include#include#includeusing namespace std;
templateclass heap
heap(const t* array,size_t size)
_createheap();
} //插入元素
void push(size_t data)
//刪除元素
void pop()
//判斷堆是否為空
bool empty()const
//求堆的大小
size_t size()const
//取堆頂層元素
t top()
private:
//實現最小堆
void _createheap() }
//向下調整
void _adjustdown(size_t parent)
else
} }//向上調整
void _adjustup(size_t child)
else
return;
} }private:
vectorv;
};void test();
heaph(arr, sizeof(arr) / sizeof(arr[0]));
h.push(5);
h.size();
h.pop();
h.size();
h.top();
}int main()
測試**:
除錯結果:
C 最小堆實現
mini heap.h pragma once include template class mini heap node heap 最小堆 uint32 t max size 最大儲存數 uint32 t size 儲存數 擴容 void expansion 刪除指定下標節點 void del n...
C 實現最小堆(binary heap)
閒來無事,用c 實現了最小堆。用到了模板類泛型程式設計,用陣列實現的最小堆。binheap.h中的宣告 templateclass binheap 其中capacity是堆的容量,在數值上等於count 1,因為堆的根從陣列elements 1 開始,elements 0 留著,用作標記。下面是全部...
最小堆及基於最小堆的最小優先佇列
最小堆具有的性質 最小堆的父親節點比子節點的值小 在最小堆的類中我們定義的函式主要有 維護最小堆 建立最小堆和利用最小堆進行排序 以下是最小堆的定義 ifndef my min heap h define my min heap h include includeusing namespace st...