C 最小堆的實現及基本操作

2021-08-25 22:32:15 字數 1688 閱讀 2390

一.建立最小堆:

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...