heap.hpp
#ifndef heap_hpp
#define heap_hpp
template
<
class
t>
class
heap
;template
<
class
t>
heap
::heap()
template
<
class
t>
heap
::heap
(int capacity)
template
<
class
t>
heap::~
heap()
template
<
class
t>
int heap
::size()
template
<
class
t>
void heap
::swim
(int k)
}template
<
class
t>
void heap
::sink
(int k)
else
//當前節點沒有右子節點,直接讓最大索引等於左子節點
//當前節點比最大索引的值大, 則退出if(
!less
(k, max)
)break
;//當前節點比最大索引的值小, 則交換,繼續下沉
exch
(k, max)
; k = max;}}
template
<
class
t>
void heap
::insert
(t t)
template
<
class
t>
t heap
::delmax()
template
<
class
t>
bool heap
::less
(int i,
int j)
template
<
class
t>
void heap
::exch
(int i,
int j)
#endif
// heap_hpp
main.c
#include
#include
"heap.hpp"
using
namespace std;
void
test01()
}int
main
(int argc,
char
*ar**)
堆結構的C 模板類實現
資料結構中堆的概念不同於 堆疊 它是指一種完全二叉樹,這種二叉樹的任一節點的關鍵字大於 或小於 其子樹的所有節點,即最大堆 最小堆 堆結構的構建採用陣列表示,與之前的二叉樹的線性儲存結構類似,主要成員函式包括插入 刪除根節點等函式。插入數值時直接在陣列的尾端增加元素,從尾端開始往上迭代判斷是否滿足堆...
C 類模板實現大根堆
大根堆是一種樹形的結構,所有父結點都大於子結點,一般用一維陣列表示,若父結點下標為n 開始下標從0開始 則左孩子下標為 2n 1.右孩子為2n 2 堆資料使用stl向量vector儲存 容量vector自動擴充 pragma once include template class t class m...
C 堆的實現
堆是乙個完全二叉樹。堆根據元素的排列方式,可以分為最大堆 max heap 和最小堆 min heap 其中 堆並不歸屬於stl庫容器元件,而是作為優先佇列 priority queue 的底層實現。堆是一種完全二叉樹,整棵二叉樹除了最底層的葉子節點之外是填滿的,而最底層的葉子節點由左至右是沒有空隙...