首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。 【说明】 堆数据结构定义如下: 对于n个元素的关键字序列{a1,a2,…,an},当且仅当满足下列关系时称其为堆。 在一个堆中,若堆顶元素为最大元素,则称为大顶堆;若堆顶元素
阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。 【说明】 堆数据结构定义如下: 对于n个元素的关键字序列{a1,a2,…,an},当且仅当满足下列关系时称其为堆。 在一个堆中,若堆顶元素为最大元素,则称为大顶堆;若堆顶元素
admin
2011-04-06
36
问题
阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。
【说明】
堆数据结构定义如下:
对于n个元素的关键字序列{a1,a2,…,an},当且仅当满足下列关系时称其为堆。
在一个堆中,若堆顶元素为最大元素,则称为大顶堆;若堆顶元素为最小元素,则称为小顶堆。堆常用完全二叉树表示,图4—1是一个大顶堆的例子。
堆数据结构常用于优先队列中,以维护由一组元素构成的集合。对应于两类堆结构,优先队列也有最大优先队列和最小优先队列,其中最大优先队列采用大顶堆,最小优先队列采用小顶堆。以下考虑最大优先队列。
假设现已建好大顶堆A,且已经实现了调整堆的函数heapify(A,n,index)。
下面将C代码中需要完善的三个函数说明如下:
(1)heapMaximum(A):返回大顶堆A中的最大元素。
(2)heapExtractMax(A):去掉并返回大顶堆A的最大元素,将最后一个元素“提前”到堆顶位置,并将剩余元素调整成大顶堆。
(3)maxHeaplnseit(A,key):把元素key插入到大顶堆A的最后位置,再将A调整成大顶堆。
优先队列采用顺序存储方式,其存储结构定义如下:
#define PARENT(i)i/2
typedef struct array{
int *int_array;//优先队列的存储空间首地址
int array_size;能//优先队列的长度
int capacity;//优先队列存储空间的容量
}ARRAY;
【c代码】
(1)函数heapMaximum
int heapMaximum(ARRAY*A){return (1);}
(2)函数heapExtractMax
int heapExtractMax(ARRAY*A){
int max;
max=A->int_array[0];
(2);
A->array_size --;
heapify(A,A->array_size,0);//将剩余元素调整成大顶堆
return max;
}
(3)函数maxHeaplnsert
int maxHeaplnsert(ARRAY*A,int key){
int i*P;
if(A->array-size==A->capacity){//存储空间的容量不够时扩充空间
P=(int*)realloc(A->int_array,A->capacity*2*sizeof(int));
if(!P)return-1;
A->int_array=P:
A->capacity=2*A->capacity;
}
A->array_size++;
i=(3);
while(i>0&&(4)){
A->int_array
=A->int_array[PARENT(i)];
i=PARENT(i);
}
(5)
return 0;
}
若将元素10插入到堆A=(15,13,9,5,12,8,7,4,0,6,2,1)中,调用maxHeaplnsert函数进行操作,则新插入的元素在堆A中第(9)个位置(从1开始)。
选项
答案
(9)3
解析
依照maxHeapInsert的算法,可有如下几步:
第一步:i=13 PARENT(i)=6 key=10 A->int_array [PARENT(i)]=8
由于key>A->int_array[PARENT(i)]
所以符合while循环条件,执行:
A->int_array
=A->int_array[PARENT(i)];
i=PARENT(i);
即:
第二步:i=6 PARENT(i)=3 key=10 A->int_array [PARENT (i)]=9
由于key>A->int_array[PARENT(i)]
所以符合while循环条件,执行:
A->int_array
=A->int_array[PARENT(i)];
i=PARENT(i);
即:
第三步:i=3 PARENT(i)=1 key=10 A->int_array [PARENT(i)]=15
由于key
int_array[PARENT(i)]
所以不符合while循环条件,跳出循环。
执行:A->int_array
=key;
即:
所以,插入元素10的位置在第三个位置。
转载请注明原文地址:https://kaotiyun.com/show/nlDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
为检测系统所能承受的数据容量,应进行()。
某软件公司在招聘软件评测师时,应聘者甲向公司做如下保证:①经过自己测试的软件今后不会再出现问题;②在工作中对所有程序员一视同仁,不会因为在某个程序员编写的程序中发现的问题多,就重点审查该程序,以免不利于团结;③承诺不需要其他人员,自己就可以独立进行测
在各种不同的软件需求中,()描述了产品必须要完成的任务,可以在用例模型中予以说明。
防火墙不具备__________功能。
(41)不是易用性测试包括的内容。
静态图像压缩标准JPEG2000中使用的是(60)算法。
下图是①设计模式的类图,该设计模式的目的是②,图中,Abstraction和RefinedAbstraction之间是③关系,Abstraction和Implementor之间是④关系。②处应填入?
结构化分析(StructuredAnalysis,SA)是面向数据流的需求分析方法,______不属于SA工具。A.分层的数据流图B.数据词典C.问题分析图D.描述加工逻辑的结构化语言、判定表或判定树
随机试题
我国《专利法》规定对外观设计专利申请进行()
与气的来源化生密切相关的脏腑有
在环境噪声现状测量中,下列( )噪声不需增加昼间、夜间的测量次数。
()是国家的经济在不受伤害条件下正常运行,确保本国最根本的经济利益不受伤害的态势。
根据《刑法》及有关规定,属于自首的情节有()。(2012年)
我国公民的基本权利包括()。
阴晴圆缺:生死存亡
当一只鱼鹰捕捉到一条白鲢、一条草鱼或一条鲤鱼而飞离水面时,往往会有许多鱼鹰几乎同时跟着飞聚到这一水面捕食。但是,当一只鱼鹰捕捉到的是一条鲶鱼时,这种情况却很少出现。以下哪项,如果正确,最能合理地解释上述现象?
数据仓库与数据库的主要区别是前者面向______型数据,后者则是面向操作型数据。
按行优先顺序存储下三角矩阵A。的非零元素,则计算非零元素aij(1≤j≤i≤n)的地址的公式为Loc(aij)=Loc(a11)+【】。
最新回复
(
0
)