首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。 【说明】 堆数据结构定义如下: 对于n个元素的关键字序列{a1,a2,…,an},当且仅当满足下列关系时称其为堆。 在一个堆中,若堆顶元素为最大元素,则称为大顶堆;若堆顶元素
阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。 【说明】 堆数据结构定义如下: 对于n个元素的关键字序列{a1,a2,…,an},当且仅当满足下列关系时称其为堆。 在一个堆中,若堆顶元素为最大元素,则称为大顶堆;若堆顶元素
admin
2011-04-06
57
问题
阅读下列说明和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;
}
根据以上说明和C代码,填充C代码中的空(1)~(5)。
选项
答案
(1)* (A->im_array) (2)A->int_array[0] =*((A->int_array)+arry_size-1) (3)A->array_size (4)key>A->int_array[PARENT(i)] (5)A->im_array[i]=key
解析
(1)按照题意,heapMaximum函数返回大顶堆A中的最大元素,由于大顶堆是按照队列方式存储的,所以队列的第一个元素就是堆中的最大元素。
(2)中只需要将队列的最后一个元素赋给队列的第一个元素即可。
(3)(4)(5)这段代码需要将key值插入到合适的堆中的位置。首先从最后一个元素开始,比较该元素的父节点是否比key大,如果不是,则将父节点换为该元素的兄弟结点,再继续从PARENT(i)的位置开始重复工作,直到发现key值比当前i的父节点小或者已达到堆顶。最后将key值赋给A->int_array
完成插入。
转载请注明原文地址:https://kaotiyun.com/show/2lDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
(65)________________不属于数据库性能测试的测试指标。
软件开发中经常利用配置库实现变更控制,主要是控制软件配置项的状态变化,不受配置管理控制的是()。
算术表达式(a-b)*c+d的后缀式是()(-、+、*表示算术的减、加、乘运算,运算符的优先级和结合性遵循惯例)。
某企业有生产部和销售部,生产部负责生产产品并送入仓库,销售部从仓库取出产品销售。假设仓库可存放n件产品。用PV操作实现他们之间的同步过程如下图所示。其中,信号量S是一个互斥信号量,初值为(1);S1是一个(2);S2是一
ISO/IEC9126《软件工程产品质量》统一了多种质量模型。其中,下述关于软件使用质量的描述,不正确的是______。A.它测量用户在特定环境中能达到其目标的程度,不是测量软件自身的属性B.使用质量的属性分为4个特性:有效性、生产率、安全性和满意度
软件可靠性是指在指定的条件下使用时,软件产品维持规定的性能级别的能力,其子特性(51)是指在软件发生故障或者违反指定接口的情况下,软件产品维持规定的性能级别的能力。
采用________________表示带符号数据时,算术运算过程中符号位与数值位采用同样的运算规则进行处理。
设数组a[0..n—1,0..m一1](n>1,m>1)中的元素以行为主序存放,每个元素占用4个存储单元,则数组元素a[i,j](0≤i
对于逻辑表达式(bufc[i]>223&&bufc[i]<240&&i+2<totalbytes),需要______个测试用例才能完成条件组合覆盖。
阅读以下家庭HFC宽带接入Internet网的技术说明,结合网络连接拓扑图,根据要求回答问题1至问题5。【说明】混合光纤一同轴电缆网(即HFC网)将光纤敷设到小区,再通过光电转换节点,利用CATV的总线式同轴电缆网连接到用户,从而为用户提供Int
随机试题
A、Theymaybeconsideredaslessloyal.B、Theywon’tgetthepromotionopportunities.C、Theyshouldtakemoreresponsibilityat
简述出版物发行员职业道德守则的内容。
冷疗法
慢性肾衰竭时高血压的发生机制,下列哪项是正确的
基础工程划分4个施工过程(挖基槽、作垫层、混凝土浇筑、回填土),在5个施工段组织固定节拍流水施工,流水节拍为3天,要求混凝土浇筑2天后才能进行回填土,该工程的流水施工工期为( )天。
按保险的经营性质划分,保险可以分为()。
Ifyouarelookingforapleasantvacationsetting,visittheParamount’sResortintheGoldenMapleMountainsalongtheDeepVa
A、Ignorethepresentation.B、Dividetheassignment.C、Omitsomechapters.D、Listenmorecarefully.B
A、Dr.Turneroftengivesquizzes.B、Shedidn’texpecttohaveaquiztoday.C、Shedoesn’tknowanythingaboutthequizeither.D
Asasocietywemightwanttorethinkthetimeandmoneyspentoneducation,sothattheseresourcescanbenefitagreaterperce
最新回复
(
0
)