Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int pos;
- int Ojciec(int v)
- {
- return v / 2;
- }
- int LewySyn(int v)
- {
- return 2 * v;
- }
- int PrawySyn(int v)
- {
- return 2 * v + 1;
- }
- void Wyswietl();
- void Dodaj(int i);
- void Usun();
- int main()
- {
- int elementy;
- cout << "Podaj ilosc elementow kopca: ";
- cin >> elementy;
- int * Heap = new int [elementy];
- for(int i=0; i<elementy; i++)
- {
- Dodaj(i);
- }
- for(int i=0; i<2; i++)
- {
- Usun();
- }
- Wyswietl();
- }
- void Wyswietl()
- {
- cout<<endl<<"Elementy kopca: "<<endl<<endl;
- for(int i=0; i<pos; i++)
- cout << Heap[i+1] << " ";
- }
- void Dodaj(int element) {
- cout<< element <<endl;
- Heap[pos+1] = element;
- pos++;
- int element = pos;
- while (element != 1 && Heap[Ojciec(element)] < Heap[element]) {
- swap(Heap[Ojciec(element)], Heap[element]);
- element=Ojciec(element);
- }
- }
- void Usun() {
- cout<<endl<<"Korzen kopca zostal usuniety"<<endl;
- if (pos==0)
- return;
- Heap[1]=Heap[pos];
- pos--;
- int v = 1;
- while(true) {
- if (LewySyn(v) > pos)
- break;
- int a = Heap[LewySyn(v)];
- if (PrawySyn(v) > pos) {
- if (Heap[v] >= Heap[LewySyn(v)])
- break;
- swap (Heap[v], Heap[LewySyn(v)]);
- v=LewySyn(v);
- } else if (Heap[LewySyn(v)] > Heap[PrawySyn(v)]) {
- if (Heap[v] >= Heap[LewySyn(v)])
- break;
- swap (Heap[v], Heap[LewySyn(v)]);
- v=LewySyn(v);
- } else {
- if (Heap[v] >= Heap[PrawySyn(v)])
- break;
- swap (Heap[v], Heap[PrawySyn(v)]);
- v=PrawySyn(v);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement