fork(1) download
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<time.h>
  4. int check_heap(int a[], int n);
  5. void insert(int val, int a[], int *n);
  6. int deletemin(int a[],int *n);
  7.  
  8. int main(void) {
  9. int a[12] = {1,13,71,14,15,80,91,24,60,63};
  10. int n;
  11. int i;
  12. int b,c;
  13.  
  14. srandom(time(NULL));
  15.  
  16. b = random() % 100 + 1;
  17. n = 10;
  18. insert(b, a, &n);
  19. n = 11;
  20. c = random() % 100 + 1;
  21. insert(c, a, &n);
  22.  
  23. printf("%d\n", check_heap(a, 12));
  24.  
  25. deletemin(a, &n);
  26.  
  27.  
  28. return 0;
  29. }
  30.  
  31. int check_heap(int a[], int n) {
  32. int i;
  33. int m;
  34. m = (n - 1) / 2;
  35. for(i = 0; i < m; i++)
  36. {
  37. if(a[i] >= a[i * 2 + 1])
  38. {
  39. return 0;
  40. }
  41. if(a[i] >= a[i * 2 + 2]){
  42. return 0;
  43. }
  44. }
  45.  
  46.  
  47. if(n % 2 == 0){
  48.  
  49. if(a[(n - 1)/2] > a[n - 1]){
  50.  
  51. return 0;
  52. }
  53. }
  54. return 1;
  55.  
  56. }
  57.  
  58. void insert(int val, int a[], int *n) {
  59.  
  60. int temp;
  61. int i;
  62.  
  63. a[*n] = val;
  64. i = *n;
  65.  
  66. while( 0 < i){
  67.  
  68. if(a[(i-1)/2] <= a[i])
  69. {
  70. break;
  71. }
  72.  
  73. temp = a[(i-1) / 2];
  74. a[(i-1) / 2] = a[i];
  75. a[i] = temp;
  76. i = (i - 1)/2;
  77.  
  78.  
  79. }
  80.  
  81. }
  82.  
  83. int deletemin(int a[],int *n){
  84.  
  85. int b;
  86. int i,j,k;
  87.  
  88. b = a[0];
  89.  
  90.  
  91. return b;
  92. }
  93.  
Success #stdin #stdout 0.02s 1676KB
stdin
Standard input is empty
stdout
1