首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。 【说明】 堆数据结构定义如下: 对于n个元素的关键字序列{a1,a2,…,an},当且仅当满足下列关系时称其为堆。 在一个堆中,若堆顶元素为最大元素,则称为大顶堆;若堆顶元素
阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。 【说明】 堆数据结构定义如下: 对于n个元素的关键字序列{a1,a2,…,an},当且仅当满足下列关系时称其为堆。 在一个堆中,若堆顶元素为最大元素,则称为大顶堆;若堆顶元素
admin
2011-04-06
69
问题
阅读下列说明和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://www.kaotiyun.com/show/nlDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
对于初始为空的栈S,入栈序列为a、b、c、d,且每个元素进栈、出栈各1次。若出栈序列的第一个元素为d,则合法的出栈序列为______。
导致软件缺陷的原因有很多,①~④是可能的原因,其中最主要的原因包括(55)。①软件需求说明书编写的不全面,不完整,不准确,而且经常更改。②软件设计说明书。③软件操作人员的水平。④开发人员不能很好的理解需求说明书和沟通不足。
电视系统采用的颜色空间中,其亮度信号和色度信号是相分离的。下列颜色空间中,(58)颜色空间不属于电视系统的颜色空间。
假设系统采用PV操作实现进程同步与互斥。若n个进程共享两台打印机,那么信号量S的取值范围为()。
已知关系模式:图书(图书编号,图书类型,图书名称,作者,出版社,出版日期,ISBN),图书编号唯一识别一本图书。建立“计算机”类图书的视图Compute-BOOK,并要求进行修改、插入操作时保证该视图只有计算机类的图书。CREATE(1)
下图是________________设计模式的类图,该设计模式的目的是________________,图中,Decorator和Component之间是________________关系,ConcreteDecorator和Decorator之间是_
()主要对与设计相关的软件体系结构的构造进行测试。
阅读以下说明,回答以下问题,将解答填入答题纸对应的解答栏内。【说明】某学校有三个校区,校区之间最远距离达到61km,学校现在需要建设校园网,具体要求如下:校园网通过多运营商接入互联网,主干网采用千兆以太网将使每个校区的中心节点连起来,每
阅读以下说明,回答以下问题,将解答填入答题纸对应的解答栏内。【说明】某学校有三个校区,校区之间最远距离达到61km,学校现在需要建设校园网,具体要求如下:校园网通过多运营商接入互联网,主干网采用千兆以太网将使每个校区的中心节点连起来,每
随机试题
氮质血症
下列药物中,降压作用迅速,使心率增快的是:()
呼吸衰竭缺氧伴CO2潴留患者不可能出现
以下哪种情况不会影响面部外形
下列各项,提示胎儿储备能力异常的项目是
下列关于税务行政复议的参加人的描述正确的有()。
对违反银行业职业操守的从业人员,所在机构应当视情况给予相应惩戒,情节严重的,应通报银监会。()
概念一般都涉及以下要素()。
分组型终端是指()。
使用实行强制检定的计量标准的单位,应当向主持考核该项计量标准的有关人民政府计量行政部门申请定期检定。()
最新回复
(
0
)