數(shù)據(jù)結(jié)構(gòu)的一點(diǎn)練習(xí)~~~~該堆借助數(shù)組實(shí)現(xiàn)
創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),集網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)、網(wǎng)站制作于一體,網(wǎng)站seo、網(wǎng)站優(yōu)化、網(wǎng)站營(yíng)銷(xiāo)、軟文發(fā)稿等專(zhuān)業(yè)人才根據(jù)搜索規(guī)律編程設(shè)計(jì),讓網(wǎng)站在運(yùn)行后,在搜索中有好的表現(xiàn),專(zhuān)業(yè)設(shè)計(jì)制作為您帶來(lái)效益的網(wǎng)站!讓網(wǎng)站建設(shè)為您創(chuàng)造效益。😋😋😋😋😂
目錄
一、需要實(shí)現(xiàn)的函數(shù)接口?
二、函數(shù)各接口的具體實(shí)現(xiàn)
#include#include
#includetypedef int type;
typedef struct Heap
{
type* a;
int size;
int capacity;
}Heap;
void HP_initial(Heap* php);//堆的初始化
void HP_push(Heap* php,type x);//堆的插入
void HP_destory(Heap* php);//堆的銷(xiāo)毀
void HP_pop(Heap* php);//堆的刪除
void HP_craet(Heap* php,type * arr ,int n);//堆的創(chuàng)建
int HP_size(Heap* php);//堆的數(shù)據(jù)個(gè)數(shù)
type HP_top(Heap * php;//取堆頂?shù)臄?shù)據(jù)
void HP_print(Heap* php);//堆的打印
二、函數(shù)各接口的具體實(shí)現(xiàn)1.首先是一些需要的工具型函數(shù)
void SpaceCreat(type** pa,int n)
{
type* temp=(type*)realloc(*pa,sizeof(type)*n);
if(temp==NULL)
{
printf("開(kāi)辟空間失敗");
exit(-1);
}
*pa=temp;
}//開(kāi)辟type型數(shù)組的空間
void swap(type* a, type* b)
{
type t=*a;
*a=*b;
*b=t;
}//交換兩數(shù)的值
void SortUp(type* a,int child)
{
int parent=(child-1)/2;
while(child)
{
if(a[parent]
2.接口函數(shù)的實(shí)現(xiàn)
void HP_initial(Heap* php)
{
php->a=NULL;
php->capacity=0;
php->size=0;
}//堆的初始化
void HP_push(Heap* php,type x)
{
if(php->capacity==0)
{
php->capacity=4;
SpaceCreat(&(php->a), php->capacity);
}
if(php->capacity==php->size)
{
php->capacity=2*php->capacity;
SpaceCreat(&(php->a), php->capacity);
}
php->a[php->size]=x;
SortUp(php->a,php->size);
php->size++;
}//堆的插入
void HP_print(Heap* php)
{
for(int i=0;isize;i++)
{
printf("%d ",php->a[i]);
}
}//堆的打印
void HP_destory(Heap* php)
{
free(php->a);
php->a=NULL;
php->capacity=0;
php->size=0;
}//堆的銷(xiāo)毀
void HP_pop(Heap* php)
{
if(php->size<=1)
{
php->size=0;
return;
}
swap(&php->a[php->size-1],&php->a[0]);
php->size--;
int parent=0;
int child=1;
while(1)
{
if(php->a[child]>php->a[parent])
{
swap(&php->a[child],&php->a[parent]);
}
parent=child;
child=2*child+1;
if(child>php->size-1)
{
break;
}
if(php->a[child]a[child+1]&&child!=php->size-1)
{
child++;
}
}
}//堆的刪除
void HP_craet(Heap* php,type * arr ,int n)//n為所傳數(shù)組的元素個(gè)數(shù)
{
for(int i=0;isize;
}//堆的數(shù)據(jù)個(gè)數(shù)
type HP_top(Heap * php)
{
return php->a[0];
}//取堆頂?shù)臄?shù)據(jù)
歡迎指正😘😘😘😘😘
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧