Advertisement
Guest User

Untitled

a guest
May 24th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.48 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. int pos;
  5.  
  6.  
  7. int Ojciec(int v)
  8. {
  9. return v / 2;
  10. }
  11.  
  12. int LewySyn(int v)
  13. {
  14. return 2 * v;
  15. }
  16.  
  17. int PrawySyn(int v)
  18. {
  19. return 2 * v + 1;
  20. }
  21. void Wyswietl();
  22. void Dodaj(int i);
  23. void Usun();
  24. int main()
  25. {
  26. int elementy;
  27. cout << "Podaj ilosc elementow kopca: ";
  28. cin >> elementy;
  29. int * Heap = new int [elementy];
  30. for(int i=0; i<elementy; i++)
  31. {
  32. Dodaj(i);
  33. }
  34. for(int i=0; i<2; i++)
  35. {
  36. Usun();
  37. }
  38. Wyswietl();
  39. }
  40. void Wyswietl()
  41. {
  42. cout<<endl<<"Elementy kopca: "<<endl<<endl;
  43. for(int i=0; i<pos; i++)
  44. cout << Heap[i+1] << " ";
  45. }
  46.  
  47. void Dodaj(int element) {
  48. cout<< element <<endl;
  49. Heap[pos+1] = element;
  50. pos++;
  51. int element = pos;
  52. while (element != 1 && Heap[Ojciec(element)] < Heap[element]) {
  53. swap(Heap[Ojciec(element)], Heap[element]);
  54. element=Ojciec(element);
  55. }
  56. }
  57.  
  58. void Usun() {
  59. cout<<endl<<"Korzen kopca zostal usuniety"<<endl;
  60. if (pos==0)
  61. return;
  62.  
  63. Heap[1]=Heap[pos];
  64. pos--;
  65.  
  66. int v = 1;
  67. while(true) {
  68. if (LewySyn(v) > pos)
  69. break;
  70. int a = Heap[LewySyn(v)];
  71. if (PrawySyn(v) > pos) {
  72. if (Heap[v] >= Heap[LewySyn(v)])
  73. break;
  74. swap (Heap[v], Heap[LewySyn(v)]);
  75. v=LewySyn(v);
  76. } else if (Heap[LewySyn(v)] > Heap[PrawySyn(v)]) {
  77. if (Heap[v] >= Heap[LewySyn(v)])
  78. break;
  79. swap (Heap[v], Heap[LewySyn(v)]);
  80. v=LewySyn(v);
  81. } else {
  82. if (Heap[v] >= Heap[PrawySyn(v)])
  83. break;
  84. swap (Heap[v], Heap[PrawySyn(v)]);
  85. v=PrawySyn(v);
  86. }
  87. }
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement