C 實現堆類

2021-10-08 06:24:35 字數 1528 閱讀 1589

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 的底層實現。堆是一種完全二叉樹,整棵二叉樹除了最底層的葉子節點之外是填滿的,而最底層的葉子節點由左至右是沒有空隙...