Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- #define N 1000
- class BH{
- int Binary [N];
- int *size;
- public:
- BH();
- void insert(int );
- void remover ();
- void print();
- void subir( int );
- void descer(int );
- };
- BH::BH(){
- size=0;
- }
- void BH:: subir(int i){
- int father=i/2;
- int aux;
- if(father>=1){
- if(Binary[i]>Binary[father]){
- aux=Binary[i];
- Binary[i]=Binary[father];
- Binary[father]=aux;
- subir(father);
- }
- }
- }
- void BH::descer(int i){
- int child=2*i;
- int aux;
- if(child<*size-1){
- if(Binary[child+1]>Binary[child])
- child++;
- if(Binary[i]<Binary[child]){
- aux=Binary[i];
- Binary[i]=Binary[child];
- Binary[child]=aux;
- }
- }
- }
- void BH:: insert (int x){
- if(*size<N-1){
- Binary[*size+1]=x; //adiciona em um novo campo a nova chave
- *size=*size+1;//incrementa o tamanho atual
- subir(*size);//corrige prioridade do elemento
- }
- }
- void BH::print (){
- int i;
- for (i=1;i<*size;i++)
- cout<<Binary[i]<<" ";
- }
- void BH ::remover (){
- if(*size!=0){
- Binary[1]=Binary[*size-1]; //primeiro elemento recebe o ultimo elemento
- *size=*size-1; //diminue o tamanho atual do vetor
- descer(1); // desce o primeiro elemento atual
- }
- }
- int main (){
- BH binary;
- string read;
- int x;
- while (cin>>read){
- if(read=="insert"){
- cin>>x;
- binary.insert(x);
- }
- if(read=="print")
- binary.print();
- if(read=="remove")
- binary.remover();
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment