数据结构 小顶堆的插入与删除操作
int insertIntoHeap(struct Heap* h, int x){
if(h->size==h->capacity)
return 0;
int i;
i=++h->size;
for(;x<h->data[i/2];i/=2)
{
h->data[i]=h->data[i/2];
if (i/2 == 0) break;
}
h->data[i]=x;
return 1;
}
int deleteMin(struct Heap* h, int* pElement){
if(h->size==0)
return 0;
*pElement=h->data[1];
int temp=h->data[h->size--];
int parent,child;
for(parent=1;parent*2<=h->size;parent=child){
child=parent*2;
if((child!=h->size)&&(h->data[child]>h->data[child+1]))
child++;
if(temp<=h->data[child])
break;
else
h->data[parent]=h->data[child];
}
h->data[parent]=temp;
return 1;
}
本文详细介绍了数据结构中小顶堆的插入和删除操作实现。通过具体的C语言代码示例,展示了如何将元素插入小顶堆并保持堆性质,以及如何从堆中删除最小元素并调整堆结构。适合于理解小顶堆的基本操作原理。
1674

被折叠的 条评论
为什么被折叠?



