MAX HEAP在C语言中堆积

时间:2018-03-17 10:57:08

标签: c struct heap

问题是我的heapify func只汇集一次而不是整个链接结构。

示例:当我输入时,1-2-3。

结果是:3-2-1,正确:

但是当我添加四个时,结果是:3-4-2-1,错误。

应该是:4-3-2-1。

这是我的heapify函数:

void heapi(tree *heap, node *NODE,int COUNT){
int i,j,k,l,parent,parentcount,tempp;
node *temp;
temp=heap->root; 


   parentcount=COUNT/2;
if(parentcount<1){
    parentcount=1;
}
   if(COUNT==0){

   }

for(i=0;i<parentcount-1;i++){     
     temp=temp->next; 
 }

   parent=temp->data;

if(temp->next==NULL){

}
else if(temp->next->data > parent){
    tempp=temp->data;
       temp->data=NODE->data;
       heap->lastleaf->data=tempp;     
    }
else if(temp->next->next==NULL){

}
else if(temp->next->next->data > parent){
    tempp=temp->data;
    temp->data=NODE->data;
       heap->lastleaf->data=tempp;  
}


}

我的结构是:

typedef struct node{
int data;
struct node *next;
}node;

typedef struct tree{
int count;
struct node *root;
struct node *lastleaf;
}tree;

0 个答案:

没有答案