heap
heap
h>
#include <stdlib.h>
// Min Heap
typedef struct {
int size;
int arr[MAX_SIZE];
} MinHeap;
// Max Heap
typedef struct {
int size;
int arr[MAX_SIZE];
} MaxHeap;
*a = *b;
*b = temp;
int main() {
MinHeap minHeap;
MaxHeap maxHeap;
minHeap.size = 0;
maxHeap.size = 0;
insertMinHeap(&minHeap, 3);
insertMinHeap(&minHeap, 1);
insertMinHeap(&minHeap, 6);
insertMinHeap(&minHeap, 5);
insertMinHeap(&minHeap, 9);
insertMinHeap(&minHeap, 8);
insertMaxHeap(&maxHeap, 3);
insertMaxHeap(&maxHeap, 1);
insertMaxHeap(&maxHeap, 6);
insertMaxHeap(&maxHeap, 5);
insertMaxHeap(&maxHeap, 9);
insertMaxHeap(&maxHeap, 8);
printf("Min Heap:\n");
displayMinHeap(&minHeap);
// Display Max Heap
printf("\nMax Heap:\n");
displayMaxHeap(&maxHeap);
deleteMinHeap(&minHeap, 2);
displayMinHeap(&minHeap);
deleteMaxHeap(&maxHeap, 2);
displayMaxHeap(&maxHeap);
return 0;
smallest = left;
smallest = right;
if (smallest != index) {
swap(&heap->arr[index], &heap->arr[smallest]);
minHeapify(heap, smallest);
if (heap->size == MAX_SIZE) {
printf("Heap overflow\n");
return;
int i = heap->size++;
heap->arr[i] = key;
i = (i - 1) / 2;
return -1;
heap->arr[index] = heap->arr[--heap->size];
minHeapify(heap, index);
return root;
printf("\n");
largest = left;
largest = right;
if (largest != index) {
swap(&heap->arr[index], &heap->arr[largest]);
maxHeapify(heap, largest);
if (heap->size == MAX_SIZE) {
printf("Heap overflow\n");
return;
int i = heap->size++;
heap->arr[i] = key;
while (i != 0 && heap->arr[(i - 1) / 2] < heap->arr[i]) {
i = (i - 1) / 2;
return -1;
heap->arr[index] = heap->arr[--heap->size];
maxHeapify(heap, index);
return root;
printf("\n");