| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2032 人关注过本帖
标题:学习日记7: 堆的路径
只看楼主 加入收藏
令狐少侠56
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:320
专家分:175
注 册:2014-4-10
结帖率:58.18%
收藏
 问题点数:0 回复次数:0 
学习日记7: 堆的路径
程序代码:
#include <stdio.h>
#include <stdlib.h>

int* BuildMaxHeap( int N )
{
    int i ;
    int t , size ;
    int item ;
    int *PtrElements ;//保存结点数据的指针

    //建立一个N个元素的最小堆,
    PtrElements=(int*)malloc ( (N+1) * sizeof(int) ) ;
    *PtrElements = -10001 ; //将第0个元素设定为最小值-10001
  
    size = 0 ;
    for(i=0 ; i<N ; i++)
    {   
        scanf("%d" , &item ) ;
        size=size+1 ;
        for(t=size ; *(PtrElements+t/2)>item  ; t=t/2  )
            *(PtrElements+t)=*(PtrElements+t/2) ;

        *(PtrElements+t) = item ;
    }
    return PtrElements ;
}


int main(  )
{
    int i,j ;
    int N,M ; //插入元素的个数、以及需要打印的路径条数
    int index ;//需打印路径的起始元素的下标
    int *p ;

    scanf("%d",&N) ;//输入插入元素的个数
    scanf("%d",&M) ;//输入需打印的路径条数
 
    p = BuildMaxHeap(  N ) ;//建立一个N个元素的最小堆

    for(i=1 ; i<=M ; i++)
    {
        scanf("%d" , &index) ;//输入需打印路径的起始元素的下标
            for(j=index ; j>1 ; j=j/2 )
                printf("%d ",*(p+j)) ;
            printf("%d",*(p+1)) ;

            printf("\n") ;
    }
    return 0;
}
搜索更多相关主题的帖子: 日记 
2015-11-24 18:21
快速回复:学习日记7: 堆的路径
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016214 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved