小顶堆(MinHeap) 中的路径

/*  堆中的路径  */

#include<stdio.h>
#include<stdlib.h>

#define MAXN 1001
#define MINH -1

int main()
{
    int heap[MAXN] = {0};
    int size=0;
    int Data=0;
    int j, i;
    int arr[]={10,26,46,23,24};

    heap[0]=MINH;

    for(int k=0;k<5;k++){
        if (*(heap + size) != MAXN) {
            for (i = ++size; arr[k]< *(heap + i / 2); i /= 2)
                *(heap + i) = *(heap + i / 2);
            *(heap + i) = arr[k];
        }
    }

    for(int m=0;m<6;m++){
        printf("%d\n", heap[m]);
    }
    
    printf("please enter Data:\n");
    scanf_s("%d", &Data);

    for (j = 1; j<MAXN; j++) {
        if (heap[j] == Data)    break;
        else continue;
    }
    if (j == MAXN)  printf("ERROR!\n");
    else {
        while (j>1) {
            printf("%d->", heap[j]);
            j /= 2;
        }
        printf("%d", heap[1]);
    }

    system("pause");

    return 0;
}

输出示例

-1
10
23
46
26
24
please enter Data:
26
26->23->10请按任意键继续. . .
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容