lhp_zml level
获赞
7
粉丝
0
关注
4
看过 TA
10
广西科技大学
2024
算法工程师
IP属地:广西
暂未填写个人简介
私信
关注
const int N=1e5+6;int pile[N],data[N];int idx=1,n;for(int i=1;i<=n;i++){     // 存入    pile[idx]=data[i], idx++;}int ind=idx-1;while(2*ind>=idx) ind--;       // 找到最后一个非叶子节点的下标void down_adjust(int pa){    if(2*pa<idx && 2*pa+1<idx){        if(pile[2*pa]>pile[2*pa+1]){            if(pile[2*pa]>pile[pa]){                exchange(pa,2*pa);                down_adjust(2*pa);            }        }        else{            if(pile[2*pa+1]>pile[pa]){                exchange(pa,2*pa+1);                down_adjust(2*pa+1);            }        }    }    if(2*pa<idx && 2*pa+1>=idx){        if(pile[2*pa]>pile[pa]){            exchange(pa,2*pa);            down_adjust(2*pa);        }    }}// 遍历调整for(int i=ind;i>=1;i--){    int p=pile[i],l,r;    if(2*i+1<idx) l=pile[2*i], r=pile[2*i+1];    else l=pile[2*i], r=pile[i]-1;    if(l>p && l>r){        exchange(i,2*i);        down_adjust(2*i);    }    if(r>p && r>l){        exchange(i,2*i+1);        down_adjust(2*i+1);    }}
0 点赞 评论 收藏
分享
链表插入,删除,链表有头节点。在第一个值为a前插入b。void insert_node(node *head,int a,int b){         node *t=head;    while(t->next!=nullptr){        if(t->next->x==a){            break;        }        t=t->next;    }    if(t->next==nullptr){        node *tt=new node();        tt->x=b;        t->next=tt;    }    else{        node *tt=new node();        tt->x=b;        tt->next=t->next;        t->next=tt;    }}删除第一个值为b的节点。void delete_node(node *head,int b){    node *t=head;    while(t->next!=nullptr){        if(t->next->x==b){            break;        }        t=t->next;    }    if(t->next!=nullptr){        node *tt=t->next;        if(tt->next==nullptr){            t->next=nullptr;            free(tt);        }        else{            t->next=tt->next;            free(tt);        }    }}
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客企业服务