【二叉树的顺序结构及实现二-堆】

发布时间:2024年01月02日

一、Heap.h

#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <stdbool.h>

// 堆结构体
typedef int HPDataType;
typedef struct Heap
{
	HPDataType* a;
	int size;
	int capacity;
}HP;

//向上调整算法
void AdjustUp(int* a, int child);

//向下调整算法
void AdjustDown(int* a, int n, int parent);

//交换函数
void Swap(HPDataType* px, HPDataType* py);

// 堆的初始化
void HeapInit(HP* hp);

// 堆的销毁
void HeapDestroy(HP* hp);

// 堆的插入
void HeapPush(HP* hp, HPDataType x);

// 堆的删除
void HeapPop(HP* hp);

//取堆顶的数据
HPDataType HeapTop(HP* hp);

//堆的打印
void HeapPrint(HP* hp);

// 堆的判空
bool HeapEmpty(HP* hp);

// 堆的数据个数
int HeapSize(HP* hp);

二、Heap.c

#include "Heap.h"

void Swap(HPDataType* px, HPDataType* py)
{
	HPDataType tmp = *px;
	*px = *py;
	*py = tmp;
}

void HeapInit(HP* hp)
{
	assert(hp);
	hp->a = NULL;
	hp->size = hp->capacity = 0;
}

void HeapDestroy(HP* hp)
{
	assert(hp);
	free(hp->a);
	hp->capacity = hp->size = 0;
}

void AdjustUp(i
文章来源:https://blog.csdn.net/weixin_58944156/article/details/135346564
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。