fork(1) download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define hmax 50
  4.  
  5. /* ヒープを表す構造体の定義 */
  6. struct heap {
  7. int box[hmax+1];
  8. int size;
  9. };
  10.  
  11. void swap(int *u, int *v)
  12. {
  13. int temp;
  14.  
  15. temp = *u;
  16. *u = *v;
  17. *v = temp;
  18. }
  19.  
  20. /* ヒープの初期化 */
  21. void initialize(struct heap *h)
  22. {
  23. h->size = 0;
  24. }
  25.  
  26. /* ヒープへの要素の挿入 */
  27. void insert(struct heap *h, int item)
  28. {
  29. int i;
  30.  
  31. i = ++h->size;
  32. h->box[i] = item;
  33. while(i > 1 && h->box[i] < h->box[i / 2]) {
  34. swap(&h->box[i], &h->box[i / 2]);
  35. i /= 2;
  36. }
  37. }
  38.  
  39. /* ヒープの最小要素 */
  40. int findmin(struct heap *h)
  41. {
  42. return(h->box[1]);
  43. }
  44.  
  45. /* 最小要素の削除 */
  46. void deletemin(struct heap *h)
  47. {
  48. int i, k;
  49.  
  50. i = 1;
  51. h->box[1] = h->box[h->size];
  52. --h->size;
  53. while(2 * i <= h->size) {
  54. k = 2 *i;
  55. if(k < h->size && h->box[k] > h->box[k + 1])
  56. k++;
  57. if(h->box[i] <= h->box[k])
  58. break;
  59. swap(&h->box[i], &h->box[k]);
  60. i = k;
  61. }
  62. }
  63.  
  64. int main(void) {
  65. int i,j;
  66. struct heap *h;
  67.  
  68. h=(struct heap *)malloc(sizeof(struct heap));
  69. initialize(h);
  70.  
  71. insert(h,10);
  72.  
  73. for(i=1;i<8;i++){
  74.  
  75. }
  76. return 0;
  77. }
  78.  
Success #stdin #stdout 0s 5300KB
stdin
Standard input is empty
stdout
Standard output is empty