#include <stdio.h>
構成 | |
| struct | heap |
マクロ定義 | |
| #define | HMAX 100 |
関数 | |
| void | swap (int *a, int *b) |
| 2つの変数の値を交換する | |
| void | create (heap *h) |
| ヒープ の初期化 | |
| void | insert (heap *h, int n) |
| データの追加 | |
| int | isEmpty (heap *h) |
| ヒープが空かどうかを調べる | |
| int | findMin (heap *h) |
| ヒープ中の最小データの値を返す | |
| void | deleteMin (heap *h) |
| ヒープ中の最小値(根)を取り除く | |
| void | showHeapSub (heap *h, int pos, int depth) |
| ヒープを表示する | |
| void | showHeap (heap *h) |
| ヒープを表示する | |
| int | main (void) |
| ヒープを使用したデータのソート | |
/.a.out < data1.dat
0: 32
1: 45
3: 52
4: 60
heap.c で定義されています。
| void create | ( | heap * | h | ) |
| void deleteMin | ( | heap * | h | ) |
ヒープ中の最小値(根)を取り除く
| *h | [in/out] ヒープ |
データの個数を1つ小さくする
左の子ノード
ヒープ条件を満たしたら終了
参照先 heap::data・heap::size・swap().
参照元 main().
| int findMin | ( | heap * | h | ) |
| void insert | ( | heap * | h, | |
| int | n | |||
| ) |
データの追加
| *h | [in/out] ヒープ | |
| n | [in] 整数値 |
< 仮に,データをヒープの最後に追加する
ヒープの修正
< 親ノードと値を交換
< 親ノードへ移動
参照先 heap::data・heap::size・swap().
参照元 main().
| int isEmpty | ( | heap * | h | ) |
ヒープが空かどうかを調べる
| heap | [in] |
| true | このヒープは空である | |
| false | このヒープは空ではない |
参照先 heap::size.
参照元 main()・showHeap().
| int main | ( | void | ) |
| void showHeap | ( | heap * | h | ) |
ヒープを表示する
| *h | [in] ヒープ |
このヒープの要素数を書き出す
showHeapSubを用いて,ヒープの先頭からを表示する
| void showHeapSub | ( | heap * | h, | |
| int | pos, | |||
| int | depth | |||
| ) |
ヒープを表示する
| *h | [in] ヒープ | |
| pos | [in] ヒープ中のノードの位置 | |
| depth | [in] このノードのヒープ中の深さ |
参照元 showHeap().
| void swap | ( | int * | a, | |
| int * | b | |||
| ) |
1.4.7