优先队列(缺)

简介: #include typedef int ElementType;struct HeapStruct;typedef struct HeapStruct *PriorityQueue;PriorityQueue ...
#include <stdio.h>
typedef int ElementType;

struct HeapStruct;
typedef struct HeapStruct *PriorityQueue;

PriorityQueue Initialize( int MaxElements );
void Destroy( PriorityQueue H );
void MakeEmpty( PriorityQueue H );
void Insert( ElementType X, PriorityQueue H );
ElementType DeleteMin( PriorityQueue H );
ElementType FindMin( PriorityQueue H);
int IsEmpty( PriorityQueue H );
int IsFull( PriorityQueue H );

struct HeapStruct
{
    int Capacity;
    int Size;
    ElementType *Elements;
};


int main()
{
    return 0;
}

PriorityQueue
Initialize( int MaxElements)
{
    PriorityQueue H;

    if( MaxElements < MinPQSize )
        Error( "Priority queue size is too small");

    H = malloc( sizeof( struct HeapStruct ) );
    if( H == NULL )
        FatalError( "Out of space!!!");

    H->Elements = malloc( ( MaxElements + 1 )
                            * sizeof( ElementType) );

    if( H->Elements == NULL )
        FatalError( "Out of space!!!");

    H->Capacity = MaxElements;
    H->Size = 0;
    H->Elements[ 0 ] = MinData;

    return H;
}

/* H->Element [0] is a sentinel 哨兵*/
void 
Insert(ElementType X, PriorityQueue H)
{
    int i;

    if( IsFull( H ) )
    {
        Error("Priority queue is full");
        return;
    }

    for( i = ++H->Size; H->Elements[ i / 2] > X; i /=2 )
        H->Elements[ i ] = H->Elements[ i / 2];
    H->Elements[ i ] = X;
}

ElementType
DeleteMin( PriorityQueue H)
{
    int i, child;
    ElementType MinElement, LastElement;

    if( IsEmpty( H ))
    {
        Error( "Priority queue is empty ");
        return H->Elements[ 0 ];
    }
    MinElement = H->Elements[ 1 ];
    LastElement = H->Elements[ H->Size-- ];

    for( i = 1; i * 2 <= H->Size; i = Child)
    {
        /* Find smaller child*/
        Child = i * 2;
        if(Child != H->Size && H->Elements[ Child + 1 ]
                            < H->Capacity[ Child])
            Child++;

        if( LastElement > H->Elements[ Child ])
            H->Elements[ i ] = H->Elements[ Child ];
        else
            break;
    }
    H->Elements[ i ] = LastElement;
    return MinElement;
}





目录
相关文章
|
算法 编译器 C++
继承和派生知识点总结 C++程序设计与算法笔记总结(四) 北京大学 郭炜(二)
继承和派生知识点总结 C++程序设计与算法笔记总结(四) 北京大学 郭炜(二)
142 0
|
10月前
|
人工智能 算法 计算机视觉
昇腾AI行业案例(三):基于 AI 图像处理的铝板缺陷检测
欢迎学习《基于 AI 图像处理的铝板缺陷检测》实验。在本实验中,你将深入了解如何运用计算机视觉(CV)领域的 AI 模型,搭建一个高效精准的铝板缺陷检测系统,并利用开源数据集和昇腾 AI 芯片对模型效果加以验证。
492 0
|
机器学习/深度学习 存储 人工智能
深度学习之不遗忘训练
基于深度学习的不遗忘训练(也称为抗遗忘训练或持久性学习)是针对模型在学习新任务时可能会忘记已学习内容的一种解决方案。该方法旨在使深度学习模型在不断接收新信息的同时,保持对旧知识的记忆。
313 4
|
负载均衡 安全 网络虚拟化
CCE集群VPC网络模式下几种访问场景
【8月更文挑战第13天】在CCE(Cloud Container Engine)集群的VPC网络模式下,支持多样化的访问场景:容器应用可直接利用VPC访问外部资源;通过ELB负载均衡或VPN/专线配置,实现外部网络对容器应用的安全访问;容器间通过内部IP或服务发现机制相互通信;跨VPC访问则可通过VPC对等连接或云连接服务实现。这些方案确保了应用内外部通信的安全与高效。
574 3
|
消息中间件 监控 负载均衡
RocketMQ实践问题收集
RocketMQ实践问题收集
|
C# 数据安全/隐私保护 移动开发
|
传感器 数据采集 算法
利用热红外遥感影像提取地表温度的草垛
地表温度作为地球环境分析的重要指标,而遥感技术作为现代重要的观测手段,使得基于遥感图像的地表温度反演的研究越来越多。主要的地表温度反演方法有:大气校正法,单窗算法,单通道法等等。本文以2013年花溪区的遥感影像为基础,介绍用辐射传输方程法对地表温度进行反演。 以Landsat8 LOI_TIRS卫星数字产品,下载花溪大致在图像中的遥感影像为基础数据,用“花溪区行政边界裁剪”得到预处理的图像。
504 0
利用热红外遥感影像提取地表温度的草垛
|
开发者
一个不太一样的带你玩游戏的公众号
嗨!大家好。我是小蚂蚁,一个游戏开发者,但是在这里,我是一个给你推荐游戏,和你一起玩游戏的朋友。 我并不是一个重度的游戏爱好者,再加上平时也没有大段的用于玩游戏的时间,所以,我对于游戏的选择大多是一些休闲小游戏,可以随时的打开玩一会儿,也可以随时的离开。游戏对于我来说可能更多的是一种碎片时间的娱乐和放松。
220 0
|
Java Android开发
错误:任务':app:dexDebug'的执行失败com.android.ide.common.process.ProcessException 问问题
错误:任务':app:dexDebug'的执行失败com.android.ide.common.process.ProcessException 问问题
744 0
|
存储 弹性计算 Linux
在linux docker容器中挂载使用云存储网关
本文介绍在linux环境下的docker容器中如何通过云存储网关以文件接口存储访问对象存储(OSS)中的数据。
2780 1
在linux docker容器中挂载使用云存储网关