堆和優先佇列的實現

2021-04-12 19:14:41 字數 1531 閱讀 4588

// minheap.h: inte***ce for the minheap class.

////

#if !defined(afx_minheap_h__6bc12e9a_b926_47c2_8acf_aa4004a0546f__included_)

#define afx_minheap_h__6bc12e9a_b926_47c2_8acf_aa4004a0546f__included_

#if _msc_ver > 1000

#pragma once

#endif // _msc_ver > 1000

template

class minheap 

;void buildheap();

bool isleaf(int pos) const;

int leftchild(int pos) const;

int rightchild(int pos) const;

// return parent position

int parent(int pos) const;

// 刪除給定下標的元素

bool remove(int pos, t& node);

void siftdown(int left);

//從position向上開始調整,使序列成為堆

void siftup(int position);

bool insert(const t& newnode);

t& removemin();

};template

minheap::minheap(const int n)

template

void minheap::buildheap()

template

bool minheap::isleaf(int pos) const

template

int minheap::rightchild(int pos) const

template

int minheap::parent(int pos) const // 返回父節點位置

template

void minheap::siftdown(int left)

else break;

}heaparray[i]=temp;

}template

void minheap::siftup(int position)

heaparray[temppos]=temp;

}template

bool minheap::insert(const t& newnode)

template

t& minheap::removemin()

else

}template

bool minheap::remove(int pos, t& node)

#endif // !defined(afx_minheap_h__6bc12e9a_b926_47c2_8acf_aa4004a0546f__included_)

堆和優先佇列

學習資料結構的時候就學習過堆,不過忘了很多了,程式設計珠璣 裡也有這一章,因此重新總結一下。堆的兩個性格 1 順序性質 任何結點的值都小於或等於子結點的值。對於最小堆而言 2 形狀性質 二叉樹結構,最多在兩層上具有葉結點,其中最底層的結點盡可能的靠左分布。堆的實現 考慮以陣列實現,對於大小為n的堆,...

堆和優先佇列

優先佇列 priority queue 特殊的 佇列 取出元素的順序是依照元素的優先權 關鍵字 大小,而不是元素進入佇列的先後順序。優先佇列的完全二叉樹表示 note 0號位置是為了之後的插入操作方便,而加入的哨兵,如果在堆排序中,未給出這樣的結點,則可不設定。堆的兩個特性 結構性 用陣列表示的完全...

堆和優先佇列

include using namespace std class heap public heap int intput capacity heap void push int value size void heap sort void output cout n inttop void pop...