请你实现一个堆(大根堆)。 操作: push x:将加入堆。保证为int型整数。不输出任何内容。 top:输出堆顶元素。若堆为空,输出"empty"(不含引号)。 pop:输出堆顶元素,且弹出堆顶。若堆为空,输出"empty"(不含引号)。

区块链毕设网qklbishe.com为您提供问题的解答

请你实现一个堆(大根堆)。
操作:
push x:将请你实现一个堆(大根堆)。   操作:   push x:将加入堆。保证为int型整数。不输出任何内容。   top:输出堆顶元素。若堆为空,输出"empty"(不含引号)。   pop:输出堆顶元素,且弹出堆顶。若堆为空,输出"empty"(不含引号)。加入堆。保证请你实现一个堆(大根堆)。   操作:   push x:将加入堆。保证为int型整数。不输出任何内容。   top:输出堆顶元素。若堆为空,输出"empty"(不含引号)。   pop:输出堆顶元素,且弹出堆顶。若堆为空,输出"empty"(不含引号)。为int型整数。不输出任何内容。
top:输出堆顶元素。若堆为空,输出"empty"(不含引号)。
pop:输出堆顶元素,且弹出堆顶。若堆为空,输出"empty"(不含引号)。

#include<iostream>
#include<string>
using namespace std;
template<typename T>
class heap{
    public:
    heap(int n):array(new T[n]),length(0){}
    void push(int x){
        
        array[length++]=x;
        for(int i=length/2-1;i>=0;i=(i-1)/2){
            adjustHeap(i);
            if(i==0)
            break;
        }
        
    }
     void pop(){
         
         if(length<=0){
             cout<<"empty"<<endl;
         }else{
             cout<<array[0]<<endl;
             array[0]=array[length-1];
             length–;
             adjustHeap(0);
             
             
         }
         
     }
    void top(){
        
        if(length<=0){
             cout<<"empty"<<endl;
        }else{
            
            cout<<array[0]<<endl;
        }
        
    }
    void adjustHeap(int i){
        
        int temp=array[i];
        for(int k=2*i+1;k<length;k=2*k+1){
            if(k+1<length && array[k+1]>array[k])
            k++;
            if(array[k]>temp){
                
                array[i]=array[k];
                i=k;
                
            }else {
                break;
            }
        }
        
        array[i]=temp;
        
    }
    private:
    T* array;
    int length;
    
};

int main(){
    
    int n(0);
    cin>>n;
    heap<int> h(n);
    string str1;
    while(n–){
        cin>>str1;
        int value(0);
       if(str1[1]==’u’){
           cin>>value;
           h.push(value);
           
           
       }else if(str1[0]==’p’){
           h.pop();
           
           
       }else if(str1[0]==’t’)
        h.top();
        
        
    }
    
    
    return 0;

}
//我的蠢办法,凑合着用吧

24:23

以上就是关于问题请你实现一个堆(大根堆)。
操作:
push x:将加入堆。保证为int型整数。不输出任何内容。
top:输出堆顶元素。若堆为空,输出"empty"(不含引号)。
pop:输出堆顶元素,且弹出堆顶。若堆为空,输出"empty"(不含引号)。的答案

欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。

区块链NFT链游项目方科学家脚本开发培训

承接区块链项目定制开发

微信:btc9767

QQ :1330797917

TELEGRAM: BTCOK9

承接区块链项目定制开发


qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 请你实现一个堆(大根堆)。 操作: push x:将加入堆。保证为int型整数。不输出任何内容。 top:输出堆顶元素。若堆为空,输出"empty"(不含引号)。 pop:输出堆顶元素,且弹出堆顶。若堆为空,输出"empty"(不含引号)。