Guest User

Untitled

a guest
Apr 22nd, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.66 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. #define N 1000
  4. class BH{
  5. int Binary [N];
  6. int *size;
  7. public:
  8. BH();
  9. void insert(int );
  10. void remover ();
  11. void print();
  12. void subir( int );
  13. void descer(int );
  14. };
  15.  
  16. BH::BH(){
  17. size=0;
  18. }
  19.  
  20. void BH:: subir(int i){
  21. int father=i/2;
  22. int aux;
  23. if(father>=1){
  24. if(Binary[i]>Binary[father]){
  25. aux=Binary[i];
  26. Binary[i]=Binary[father];
  27. Binary[father]=aux;
  28. subir(father);
  29. }
  30. }
  31. }
  32.  
  33.  
  34. void BH::descer(int i){
  35. int child=2*i;
  36. int aux;
  37. if(child<*size-1){
  38. if(Binary[child+1]>Binary[child])
  39. child++;
  40. if(Binary[i]<Binary[child]){
  41. aux=Binary[i];
  42. Binary[i]=Binary[child];
  43. Binary[child]=aux;
  44. }
  45. }
  46. }
  47. void BH:: insert (int x){
  48. if(*size<N-1){
  49. Binary[*size+1]=x; //adiciona em um novo campo a nova chave
  50. *size=*size+1;//incrementa o tamanho atual
  51. subir(*size);//corrige prioridade do elemento
  52. }
  53. }
  54.  
  55. void BH::print (){
  56. int i;
  57. for (i=1;i<*size;i++)
  58. cout<<Binary[i]<<" ";
  59.  
  60. }
  61.  
  62. void BH ::remover (){
  63. if(*size!=0){
  64. Binary[1]=Binary[*size-1]; //primeiro elemento recebe o ultimo elemento
  65. *size=*size-1; //diminue o tamanho atual do vetor
  66. descer(1); // desce o primeiro elemento atual
  67.  
  68. }
  69.  
  70. }
  71. int main (){
  72.  
  73. BH binary;
  74. string read;
  75. int x;
  76. while (cin>>read){
  77. if(read=="insert"){
  78. cin>>x;
  79. binary.insert(x);
  80. }
  81. if(read=="print")
  82. binary.print();
  83. if(read=="remove")
  84. binary.remover();
  85.  
  86.  
  87. }
  88. return 0;
  89. }
Add Comment
Please, Sign In to add comment