zoukankan      html  css  js  c++  java
  • .6 有关大根堆的push pop操作

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #define  MAX_HEAP 200
     4 #define heap_full(n) (n==MAX_HEAP)
     5 #define heap_empty(n) (!n)
     6 //最大堆(大根堆)插入操作 删除操作
     7 
     8 
     9 typedef struct{
    10     int k;
    11     }element ;
    12 element heap[MAX_HEAP];
    13 
    14 void push(element item, int * n)
    15 {
    16     int i ;
    17     if(heap_full(*n)){
    18         fprintf(stderr, "the heap is full
    ");
    19         exit(EXIT_FAILURE);
    20     }
    21     i = ++(*n);
    22     while( i != 1 && item.k>heap[i/2].k){
    23         heap[i] = heap[i/2];
    24         i = i/2;
    25     }
    26     heap[i] = item;
    27 }
    28 
    29 element pop(int * n )
    30 {
    31     int par , chi ,i;
    32     element item , tmp ;
    33     if(heap_empty(*n)){
    34         fprintf(stderr, "the heap is empty
    ");
    35         exit(EXIT_FAILURE);
    36     }
    37     item = heap[1];
    38     tmp = heap[(*n)--];
    39     par = 1 ; chi = 2 ;
    40     while( chi <= *n){
    41         if( chi<*n && heap[chi].k < heap[chi+1].k){
    42             chi++;
    43         }
    44         if( tmp.k >= heap[chi].k) break;
    45         heap[par] = heap[chi] ;
    46         par = chi ; chi *= 2;
    47     }
    48     heap[par] = tmp ;
    49     return item  ;
    50 }
    51 
    52 int main()
    53 {
    54     int arr[] = {1,5,3,2,90,6} ;
    55     int n = 0 , i , b1 ;
    56     element item ;
    57     b1 = sizeof(arr) / sizeof(int) ;
    58     for(i = 0 ; i < b1 ; i++){
    59         item.k = arr[i] ;
    60         push(item , &n) ;
    61     }
    62 
    63     while(n>0){
    64         item = pop(&n) ;
    65         printf("%d %d
    ",b1-n , item.k);
    66     }
    67     return 0 ;
    68 }
  • 相关阅读:
    十万个为什么
    安装VmwareTools遇到的问题
    CentOS7没有ifconfig命令怎么办
    ftp/ http/ https/ tcp的关系
    C/S和B/S架构
    Nginx 安装以及验证教程
    osi七层模型
    在linux上安装tenginx
    Awvs、Snort的下载安装
    Laravel——DI(依赖注入)
  • 原文地址:https://www.cnblogs.com/shaughn/p/3487928.html
Copyright © 2011-2022 走看看