Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class Kopiec{
- private:
- int el; //dodawany element
- int n; //rozmiar tablicy
- int *tab;
- int wielkosckopca;
- public:
- Kopiec();
- void zatapianie(int el, int n);
- void wynurzanie(int el, int n);
- void wypisz(int n);
- void inserting(int wartosc);
- int first();
- int extract();
- virtual ~Kopiec(){}
- };
- Kopiec::Kopiec(){
- int wielkosckopca=11;
- tab = new int[20];
- tab[0]=1;
- tab[1]=12;
- tab[2]=11;
- tab[3]=10;
- tab[4]=11;
- tab[5]=8;
- tab[6]=5;
- tab[7]=3;
- tab[8]=7;
- tab[9]=2;
- tab[10]=9;
- }
- void Kopiec::inserting(int wartosc)
- {
- tab[n+1] = wartosc;
- wynurzanie(el, n+1);
- n++;
- wielkosckopca++;
- }
- int Kopiec::first()
- {
- if(isEmpty()==false){
- return tab[0];
- }
- }
- int Kopiec::extract(){
- if(isEmpty()==false)
- {
- wielkosckopca--;
- int temp = tab[0];
- tab[0]=tab[wielkosckopca];
- //
- return temp;
- }
- }
- bool Kopiec::isEmpty()
- {
- if(wielkosckopca==0)
- return true;
- }
- void Kopiec::zatapianie(int el, int n)
- {
- int l = 2*el+1;
- int r = 2*el+2;
- int wiekszy;
- if((l<n)&&(tab[l]>tab[el]))
- {
- wiekszy=l;
- }
- else
- {
- wiekszy=el;
- }
- if((r<n)&&(tab[r]>tab[wiekszy]))
- {
- wiekszy=r;
- }
- if(wiekszy != el)
- {
- swap(tab[el],tab[wiekszy]);
- zatapianie(wiekszy, n);
- }
- }
- void Kopiec::wynurzanie(int el, int n)
- {
- int ojciec = (el-1)/2;
- if(el>1)
- {
- if(tab[el]>tab[ojciec])
- {
- swap(tab[el],tab[ojciec]);
- wynurzanie(ojciec,n);
- }
- }
- }
- void Kopiec::wypisz(int n)
- {
- for(int i=0;i<n;i++)
- {
- cout << tab[i];
- }
- cout << endl;
- }
- int main()
- {
- Kopiec k;
- //k.wypisz(11);
- //k.wynurzanie(0,11);
- //k.wypisz(11);
- cout << "Hello world!";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement