#include #include #include int left(int i); int right(int i); int parent(int i); void kopiec_przywroc(int*k,int n,int i); void kopiec_buduj(int* k,int n); int kopiec_usun_max(int* k,int* n); int kopiec_wstaw(int* k, int* n,int i); void main(){ char w='\0'; int a,n,i,*tab=NULL; while(1){ printf("Kopce\n"); printf("w-wstaw do kopca\n"); printf("u-usun wezel\n"); printf("b-buduj kopiec\n"); printf("q-wyjscie\n"); printf("Co chcesz zrobic:"); fflush(stdin); scanf("%c",&w); switch(w){ case 'b': printf("Podaj ilosc elementow z ktorych chcesz zbudowac kopiec:"); fflush(stdin); scanf("%d",&n); if(n<=0){ printf("Blad"); break; } tab=(int*)malloc(n*sizeof(int)); for(i=0;i*(k+i)){ max=l; }else{ max=i; } if(r*(k+max)){ max=r; } if(max!=i){ tmp=*(k+max); *(k+max)=*(k+i); *(k+i)=tmp; kopiec_przywroc(k,n,max); } } void kopiec_buduj(int* k,int n){ int i=(n-1)/2; while(i>=0){ kopiec_przywroc(k,n,i); i--; } } int kopiec_usun_max(int* k,int* n){ int max=*k; *k=*(k+*n); *n=*n-1; kopiec_przywroc(k,n,0); } int kopiec_wstaw(int* k, int* n,int key){ int i; *n=*n+1; i=*n; while(i>0 && *(k+parent(i))