关于数据结构Mooc后的每一道答案
基本我都已经给出了详解
希望能对大家有所帮助
收藏一下也是方便大家查找吧
希望大家一起进步!
(c语言)浙大数据结构Mooc作者答案集
下面是关于这道题的图片
关于这道题的闲谈
确实数据结构要好好学,毕竟国内大厂面试要考察hhh,但是每次看完这么枯燥的课之后,用手敲出代码解出题目还是开心的,伴随着BGM解题,时间总是过的特别快,希望之后每一天都是CodeFlowDay吧
关于这道题的思路
很显然,这道题的实现并不是很难,就是最基本的操作,建立一个最小堆,并把要检查的堆的路径Print出来,很简单的思路,这道题没什么好说的,毕竟这道题我都只调试了10秒就运行正确了hhh,可想而知
下面是代码实现
#include <stdio.h>
#define MAXN 1001
//Min Heap最小堆的缩写
#define MINH -10001
typedef int ElementType;
ElementType H[MAXN];
int size;
void Create();
int Insert(ElementType item);
void Create()
{
/*初始化数组*/
H[0] = MINH;
size = 0;
}
int Insert(ElementType item)
{
int i = size+1;
//建议用纸张画一下并实现一下
for( ;H[i/2]>item;i/=2)
H[i] = H[i/2];
H[i] = item;
size++;
}
int main()
{
//N为插入元素个数,M为打印路数条数
int N,M;
int i,insertnumber,printnumber;
scanf("%d%*c%d",&N,&M);
Create();
for(i=0;i<N;i++)
{
scanf("%d",&insertnumber);
Insert(insertnumber);
}
for(i=0;i<M;i++)
{
scanf("%d",&printnumber);
//这里提前输出一个是方便 最后末尾不输出多余的空格
printf("%d",H[printnumber]);
while(printnumber >1)
{
printnumber /=2;
printf(" %d",H[printnumber]);
}
if(i != M-1)
printf("\n");
}
return 0;
}
希望自己在之后的学习之路中不要lose heart lose courage
也算是对自己的勉励吧 确实还有好多路要走
猛兽才会独行 牛羊总是成群结队 Talk is cheap Show me the code!