在c中的堆中插入和删除

时间:2017-05-02 00:22:31

标签: c heap heapsort binary-heap

我的程序中有一个问题,应该提示用户输入数字,程序会堆积它们。程序运行但插入第一个数字后显示运行时错误。 我试图多次修复但是徒劳无功。 如果有人能够指出代码中的确切错误,那将非常感激。提前致谢。 =) 无论如何,这是代码:

#include <stdio.h>
void insert_node(int arr[], int max){
    if(max<15){
        printf("Type the number to insert: ");
        scanf("%d", arr[max]);  
        max++;
        }
    else
    printf("Error. The heap is full!");
}
void printheap(int arr[], int max){
    int count;  
    if(max>=1){
        printf("\nPrinting the Heap:");
        for(count==0;count<=max;count++)
        printf(" %d", arr[count]);
    }
}
void heapSort(int arr[], int max) {
    int i=0,temp,lc,rc; 
    while(i!=max-1){
        lc=2i+1;
        rc=2i+2;
        if(arr[i]<arr[lc]){ 
            temp=arr[i];
            arr[i]=arr[lc];
            arr[lc]=temp;
        }
        else if(arr[i]<arr[rc]){
            temp=arr[i];
            arr[i]=arr[rc];
            arr[rc]=temp;
        }   
        i=i+1;
    }
}
int main(int argc, char *argv[]){
    int arr[15];
    int max=0;  
    char ch;
    while(ch!='n' && ch!='N'){
        printheap(arr,max);
        insert_node(arr,max);   
        if(max>1)
            heapSort(arr,max);
        printf("\nInsert another key (y:yes/n:no)?  ");
        scanf("%c", &ch);
    }
    return 0;
}

0 个答案:

没有答案