글
#include <stdio.h>
#include <stdlib.h>
#define MAX_ELEMENT 100
typedef struct {
int heap[MAX_ELEMENT];
int heap_size;
} heapType;
heapType* createHeap()
{
heapType *h = (heapType *)malloc(sizeof(heapType));
h->heap_size=0;
return h;
}
void insertHeap(heapType *h, int item)
{
int i;
h->heap_size = h->heap_size +1;
i = h->heap_size;
while((i!=1) && (item > h->heap[i/2])){
h->heap[i] = h->heap[i/2];
i/=2;
}
h->heap[i] = item;
}
int deleteHeap(heapType *h)
{
int parent, child;
int item, temp;
item = h->heap[1];
temp = h->heap[h->heap_size];
h->heap_size = h->heap_size -1;
parent = 1;
child = 2;
while(child <= h->heap_size) {
if((child < h->heap_size) && (h->heap[child]) < h->heap[child+1])
child++;
if (temp >= h->heap[child]) break;
h->heap[parent] = h->heap[child];
parent = child;
child = child*2;
}
h->heap[parent] = temp;
return item;
}
printHeap(heapType *h)
{
int i;
printf("Heap : ");
for(i=1; i<= h->heap_size; i++){
printf("[%d] ", h->heap[i]);
}
}
void main()
{
int i, n, item;
heapType *heap = createHeap();
insertHeap(heap, 3);
insertHeap(heap, 15);
insertHeap(heap, 56);
insertHeap(heap, 7);
insertHeap(heap, 33);
insertHeap(heap, 45);
insertHeap(heap, 20);
insertHeap(heap, 19);
printHeap(heap);
n= heap->heap_size;
for(i=1; i<=n; i++){
item = deleteHeap(heap);
printf("\n delete : [%d] ", item);
}
getchar();
}
'컴퓨터 > c관련 숙제' 카테고리의 다른 글
노드 입력 후 부자노드 찾기 (0) | 2013.12.29 |
---|---|
DK128 -EXT2 온도센서 (0) | 2013.12.29 |
조도센서 부분작동 (0) | 2013.12.29 |
조도센서 관련 파일 (0) | 2013.12.29 |
RFID 정리 (0) | 2013.12.29 |
RECENT COMMENT