C 언어 알고리즘과 데이터 구조 - 최소 무더기의 실현 (판자)
14380 단어 알고리즘과 데이터 구조
n
n ,
#include
#include
#define ElementType int
#define MinData 1000;
typedef struct HeapStruct* MinHeap;
struct HeapStruct{
ElementType *Elements;
int Size;
int Capacity;
};
MinHeap Creat(int MaxSize)
{
MinHeap H = malloc(sizeof(struct HeapStruct));
H->Elements = malloc((MaxSize + 1) * sizeof(ElementType));
H->Size = 0;
H->Capacity = MaxSize;
return H;
}
int IsFull(MinHeap H)
{
if(H->Size < H->Capacity) return 0;
else return 1;
}
int IsEmpty(MinHeap H)
{
if(H->Size == 0) return 1;
else return 0;
}
void Insert(MinHeap H, ElementType item)
{
int i;
if(IsFull(H)) {
printf("full");
return;
}
i = ++H->Size;
for( ; i > 1 && H->Elements[i/2] > item; i /= 2)
H->Elements[i] = H->Elements[i/2];
H->Elements[i] = item;
}
ElementType Delete(MinHeap H)
{
int Parent, Child;
ElementType MinItem, temp;
if(IsEmpty(H)) {
printf("empty");
return -1;
}
MinItem = H->Elements[1];
temp = H->Elements[H->Size--];
for(Parent = 1; Parent * 2 <= H->Size; Parent = Child) {
Child = Parent * 2;
if((Child != H->Size) && (H->Elements[Child] > H->Elements[Child + 1]))
Child++;
if(temp <= H->Elements[Child]) break;
else H->Elements[Parent] = H->Elements[Child];
}
H->Elements[Parent] = temp;
return MinItem;
}
int main()
{
int N, i;
scanf("%d", &N);
MinHeap minh = Creat(N);
for(i = 0; i < N; i++) {
int temp;
scanf("%d", &temp);
Insert(minh, temp);
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python3를 사용하여 빠른 배열 정렬2020년 새해 복 많이 받으세요.저는 ryuichi69라고 합니다.오늘도 알고리즘 연습의 성과, 연습을 설명하는 동시에 이 글을 썼다.솔직히 이해하기 쉽게 쓰느라 힘들었는데 설명하기 어려운 부분, 요건 누락 등이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.