问题是我的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;