【文档说明】国家开放大学数据结构本形考作业1-4参考答案.pdf,共(28)页,826.898 KB,由小喜鸽上传
转载请保留链接:https://www.ichengzhen.cn/view-155456.html
以下为本文档部分文字说明:
国家开放大学《数据结构(本)》形考作业1-4参考答案形考作业1一、单项选择题(每小题3分,共60分)1.把数据存储到计算机中,并具体体现数据元素间的逻辑结构称为()。A.算法的具体实现B.物理结构C.逻辑结构D.给相关变量分配存储单元2.下列说法中,不正确的是
()。A.数据项是数据中不可分割的最小可标识单位B.数据元素是数据的基本单位C.数据项可由若干个数据元素构成D.数据可有若干个数据元素构成3.一个存储结点存储一个()。A.数据结构B.数据元素C.数据类型D.数据项4.数据结构中,与所使用的计算机无关的是数据的()。A.物
理和存储结构B.物理结构C.逻辑结构D.存储结构5.在线性表的顺序结构中,以下说法正确的是()。A.逻辑上相邻的元素在物理位置上不一定相邻B.逻辑上相邻的元素在物理位置上也相邻C.进行数据元素的插入、删除效率较高D.数据元素是不能随机访问的6.对链表
,以下叙述中正确的是()。A.结点占用的存储空间是连续的B.插入删除元素的操作一定要要移动结点C.可以通过下标对链表进行直接访问D.不能随机访问任一结点7.下列的叙述中,不属于算法特性的是()。A.可读性B.输入性C.可行性D.有穷性8.算法的时间复杂度
与()有关。A.算法本身B.计算机的操作系统C.数据结构D.所使用的计算机9.设有一个长度为n的顺序表,要在第i个元素之前(也就是插入元素作为新表的第i个元素),插入一个元素,则移动元素个数为()。A.
n-i+1B.n-i-1C.n-iD.i10.设有一个长度为n的顺序表,要删除第i个元素移动元素的个数为()。A.iB.n-iC.n-i-1D.n-i+111.在一个单链表中,p、q分别指向表中两个相邻的结点,且q所指结点是p所指结点的直接后继,现要删除q所指结点,可用语句()。A
.p->next=q->nextB.p=q->nextC.p->next=qD.q->next=NULL12.在一个单链表中p所指结点之后插入一个s所指的结点时,可执行()。A.p->next=s->next;B.p->next=s;s->next=p->nextC
.p=s->nextD.s->next=p->next;p->next=s;13.非空的单向循环链表的尾结点满足()(设头指针为head,指针p指向尾结点)。A.p->next==headB.p==NULLC.p->next==NULLD.p
==head14.链表不具有的特点是()。A.逻辑上相邻的元素在物理位置上不一定相邻B.插入删除不需要移动元素C.不必事先估计存储空间D.可随机访问任一元素15.带头结点的链表为空的判断条件是()(设头指针为head)。A.head==NULLB.h
ead!=NULLC.head->next==NULLD.head->next==head16.在一个长度为n的顺序表中为了删除第5个元素,由第6个元素开始从后到前依次移动了15个元素。则原顺序表的长度为()。A.20B.25C.21D.1917.有关线性表的正确
说法是()。A.线性表至少要求一个元素B.表中的元素必须按由小到大或由大到下排序C.每个元素都有一个直接前驱和一个直接后继D.除了一个和最后一个元素外,其余元素都有一个且仅有一个直接前驱和一个直接后继18.向一个有127个元素的顺序表中插入一个新元素,并保持原来的顺序不
变,平均要移动()个元素。A.8B.63C.7D.63.519.一个顺序表第一个元素的存储地址是90,每个元素的长度为2,则第6个元素的地址是()。A.102B.100C.106D.9820.在一个不带头结点的单循环链表中,p、q分别指向表中第一个结点和尾结点,
现要删除第一个结点,且p、q仍然分别指向新表中第一个结点和尾结点。可用的语句是p=p->next;和()。A.p->next=qB.p=q->nextC.q=pD.q->next=p二、判断题(每小题2分,14题
,共28分)21.数据元素可以有一个或多个数据项组成。(√)22.数据元素之间的抽象关系称为物理结构。(×)23.数据的逻辑结构在计算机中的表示称为逻辑结构。(×)24.数据的逻辑结构是与存储该结构的计算机相关的。(×)25.数据结构中,元素之间存在多对多的关系
称为树状结构。(×)26.通常可以把一本含有不同章节的书的目录结构抽象成线性结构。(×)27.通常可以把某城市中各公交站点间的线路图抽象成树型结构。(×)28.设有一个不带头结点的单向循环链表,结点的指针域为next,指针p指向尾结点,现要使p指向第一个结点,可用语句p=p->next;。(√
)29.设有一个单向链表,结点的指针域为next,头指针为head,p指向尾结点,为了使该单向链表改为单向循环链表,可用语句p->next=head。(√)30.设有一个单向循环链表,结点的指针域为next,头指针为head,指针p指向表中某
结点,若逻辑表达式p->next==head;的结果为真,则p所指结点为尾结点。(√)31.要在一个单向链表中p所指向的结点之后插入一个s所指向的新结点,若链表中结点的指针域为next,可执行p->next=s;s->next=p->next;的操作。(×)32.要在一个单向链表中
删除p所指向的结点,已知q指向p所指结点的直接前驱结点,若链表中结点的指针域为next,则可执行q->next=p->next;(√)33.要在一个带头结点的单向循环链表中删除头结点,得到一个新的不带头结点的单向循环链表,若结点的指针域为
next,头指针为head,尾指针为p,则可执行head=head->next;p->next=head;。(√)34.设有一个单向循环链表,头指针为head,链表中结点的指针域为next,p指向尾结点的直接前驱
结点,若要删除尾结点,得到一个新的单向循环链表,可执行操作p->next=head;。(√)三、程序填空题(每小题6分,共12分。请点击正确选项,然后拖拽至相应的方框上)35.设线性表以不带头结点的单向链表存储,链表头指针为head,以下程序的功能是输出链表中各结点中的数据域dat
a,完成程序中空格部分。#defineNULL0voidmain(){NODE*head,*p;p=head;/*p为工作指针*/do{printf(“%d\n”,(p‑>data);(p=p‑>next);}while(p!=NULL);}p‑>d
atap=p‑>nextp!=NULL36.设有一个头指针为head的不带头结点单向链表,p、q是指向链表中结点类型的指针变量,p指向链表中结点a,(设链表中没有结点的数据域与结点a的数据域相同),写出相关语句(1)使该单向链表成为单向循环链表(2)插入结点s,使它成为a结
点的直接前驱q=p;x=p->data;while(q‑>next!=NULL)q=q->next;q->next=head;q=p;p=p->next;while(p->data!=x){q=p;(p=p‑>next)}s->next=p;(q‑>next=s
)p=p‑>nextq‑>next=sq‑>next!=NULL形考作业2一、单项选择题(每小题2分,共50分)1.若让元素1,2,3依次进栈,则出栈顺序不可能为()。A.1,3,2B.3,1,2C.3,
2,1D.2,1,32.一个队列的入队序列是1,2,3,4。则队列的输出序列是()。A.3,2,4,1B.1,2,3,4C.1,4,3,2D.4,3,2,13.向顺序栈中压入新元素时,应当()。A.先后次序无关紧要B.同时进行C.先存入元
素,再移动栈顶指针D.先移动栈顶指针,再存入元素4.在一个栈顶指针为top的链栈中,将一个p指针所指的结点入栈,应执行()。A.p->next=top->next;top=top->next;B.top->next=p;C.p->next=to
p->next;top->next=p;D.p->next=top;top=p;5.在一个栈顶指针为top的链栈中删除一个结点时,用x保存被删结点的值,则执行()。A.x=top;top=top->next;B
.x=top->data;top=top->next;C.x=top->data;D.top=top->next;x=top->data;6.判断一个顺序队列(最多元素为m)为空的条件是()。A.front==rearB.rear==m-1
C.rear=mD.front==rear+17.判断一个循环队列为满的条件是()。A.(rear+1)%MaxSize==frontB.front==rear+1C.rear%MaxSize==frontD.rear
=MaxSize8.判断栈满(元素个数最多n个)的条件是()。A.top=-1B.top==0C.top==n-1D.top!=09.设有一个20阶的对称矩阵A(第一个元素为a1,1),采用压缩存储的方式,将
其下三角部分以行序为主序存储到一维数组B中(数组下标从1开始),则矩阵元素a6,2在一维数组B中的下标是()。A.23B.21C.28D.1710.在解决计算机主机与打印机之间速度不匹配问题时通常设置一个打印数据缓冲区,主机将要输出的数据依次写入缓冲区中,而打印机则从缓冲区中取出数据打印,
该缓冲区应该是一个()结构。A.堆栈B.线性表C.数组D.队列11.一个递归算法必须包括()。A.递归部分B.终止条件和迭代部分C.迭代部分D.终止条件和递归部分12.在一个链队中,假设f和r分别为队头和队尾指针,则删除一个结点的运算为()。A.
f=f->next;B.r=r->next;C.f=r->next;D.r=f->next;13.在一个链队中,假设f和r分别为队头和队尾指针,则插入s所指结点的运算为()。A.f->next=s;f=s;B.s-
>next=r;r=s;C.s->next=f;f=s;D.r->next=s;r=s;14.数组a经初始化chara[]=“English”;a[7]中存放的是()。A.变量hB.字符hC."h"D.字符串的结束符15.设主串为“ABcCDABcdEFaBc”,以下模式串能与主串成功匹
配的是()。A.AbcB.BcdC.BCdD.ABC16.字符串a1="AEIJING",a2="AEI",a3="AEFANG",a4="AEFI"中最大的是()。A.a4B.a1C.a3D.a217.两个字符串相等的条件是()。A.两串包含的字
符相同B.两串的长度相等,并且对应位置上的字符相同C.两串的长度相等,并且两串包含的字符相同D.两串的长度相等18.一维数组A采用顺序存储结构,每个元素占用6个字节,第6个元素的存储地址为100,则该数组的首地址
是()。A.70B.28C.90D.6419.一个非空广义表的表头()。A.只能是原子B.可以是子表或原子C.只能是子表D.不可能是原子20.对稀疏矩阵进行压缩存储,可采用三元组表,一个10行8列的稀疏矩阵A
,其相应的三元组表共有6个元素,矩阵A共有()个零元素。A.72B.10C.74D.821.对稀疏矩阵进行压缩存储,可采用三元组表,一个10行8列的稀疏矩阵A共有73个零元素,A的右下角元素为6,其相应的三元组表中的第7个元素是()。A.(10,
8,7)B.(7,10,8)C.(7,8,10)D.(10,8,6)22.对一个栈顶指针为top的链栈进行入栈操作,通过指针变量p生成入栈结点,并给该结点赋值a,则执行:p=(structnode*)malloc(sizeof(structnode);p->data=a;和()。A.p->ne
xt=top;top=p;B.p->next=top;p=top;C.top=top->next;p=top;D.top->next=p;p=top;23.头指针为head的带头结点的单向链表为空的判定条件是()为真。A.head==NULLB.he
ad->next!=NULLC.head->next!=NULLD.head->next==NULL24.设有一个对称矩阵A,采用压缩存储的方式,将其下三角部分以行序为主序存储到一维数组B中(数组下标从1开始),B数组共有55个元素,则该矩阵是()阶的对称矩阵。A.20B
.5C.15D.1025.数组a经初始化chara[]=“English”;a[1]中存放的是()。A.字符EB."E"C."n"D.字符n二、判断题(每小题2分,16题,共32分)26.设有一个链栈,栈顶指针为hs,现有一个s所指向的结点要入栈,则
可执行操作。hs=s;s->next=hs;(×)27.设有一个非空的链栈,栈顶指针为hs,要进行出栈操作,用x保存出栈结点的值,栈结点的指针域为next,则可执行hs=hs->next;x=hs->data;(√)28.有一个链栈,栈顶指针为h,现有一个p所指
向的结点要入栈,则可执行操作p->next=h;和h=p;(√)29.设有一个非空的链栈,栈顶指针为hs,要进行出栈操作,用x保存出栈结点的值,栈结点的指针域为next,数据域为data,则可执行hs=hs->next;x=hs->data;(×)30.在一个
链队中,f和r分别为队头和队尾指针,队结点的指针域为next,则插入所指结点的操作为r->next=s;r=s;(√)31.在一个链队中,f和r分别为队头和队尾指针,队结点的指针域为next,s指向一个要入队的结点,
则入队操作为r=s;r->next=s;(×)32.在一个不带头结点的非空链队中,f和r分别为队头和队尾指针,队结点的数据域为data,指针域为next,若要进行出队操作,并用变量x存放出队元素的数据值,则相关操作为x=f->data;
f=f->next;(√)33.对稀疏矩阵进行压缩存储,可采用三元组表,一个6行7列的稀疏矩阵A相应的三元组表共有8个元素,则矩阵A共有34个零元素。(√)34.循环队列的最大存储空间为MaxSize,队头指针为f,队尾指针为r,当(r+1)%MaxSize=f时表明
队列已满。(√)35.循环队列的队头指针为f,队尾指针为r,当r==f时表明队列已满。(×)36.空串的长度是0;空格串的长度是空格字符的个数。(√)37.对稀疏矩阵进行压缩存储,矩阵中每个非零元素对应的三元组包
括该元素的行下标、列下标、和非零元素值三项信息。(√)38.循环队列的引入,目的是为了克服假上溢。(√)39.设有n阶对称矩阵A,用一维数组s压缩存储A的下三角元素,s的下标从零开始,元素s[26]相应于A中的元素为a7,5。(×)40.循环
队列的最大存储空间为MaxSize=6,采用少用一个元素空间以有效的判断栈空或栈满,若队头指针front=4,当队尾指针rear=3时队满。(√)41.循环队列的最大存储空间为MaxSize=6,采用少用
一个元素空间以有效的判断栈空或栈满,若队头指针front=4,队尾指针rear=3时,队列中共有5个元素。(√)三、程序选择填空题(每小题9分,共18分。请点击正确选项,然后拖拽至相应的方框上)42.以下函数为链栈的进栈操作,x是要进栈的结点的数据域,top为栈顶指针structnode{
ElemTypedata;structnode*next;};structnode*top;voidPush(ElemTypex){structnode*p;p=(structnode*)malloc(A.sizeof(structnode));p->data=x;(p‑>next=top);(
top=p);}A.sizeof(structnode)top=pp‑>next=top43.以下函数为链队列的入队操作,x为要入队的结点的数据域的值,front、rear分别链队列的队头、队尾指针structnode{ElemTypedata;structnode
*next;};structnode*front,*rear;voidInQueue(ElemTypex){structnode*p;p=(structnode*)malloc((sizeof(structn
ode));p->data=x;p->next=NULL;(rear‑>next=p);rear(p);}rear‑>next=pp(sizeof(structnode)形考作业3一、单项选择题(每小题2分,共38分)1.假定一棵二叉树中,双分支结点数为15,单分支结点数为30,则叶子
结点数为()。A.17B.47C.16D.152.二叉树第k层上最多有()个结点。A.2kB.2k-1C.2k-1D.2k-13.将含有150个结点的完全二叉树从根这一层开始,每一层从左到右依次对结点进行编号,根结点的编号为1,则编号为69的结点的双亲结
点的编号为()。A.33B.35C.34D.364.如果将给定的一组数据作为叶子数值,所构造出的二叉树的带权路径长度最小,则该树称为()。A.平衡二叉树B.二叉树C.完全二叉树D.哈夫曼树5.在一棵度具有5层的满二叉树中结点总数为
()。A.16B.31C.33D.326.一棵完全二叉树共有6层,且第6层上有6个结点,该树共有()个结点。A.72B.38C.31D.377.利用3、6、8、12这四个值作为叶子结点的权,生成一棵哈夫曼树,该树中所有叶子结点中的最长带权路径长度为()。A.12B
.18C.16D.308.在一棵树中,()没有前驱结点。A.分支结点B.叶结点C.树根结点D.空结点9.设一棵采用链式存储的二叉树,除叶结点外每个结点度数都为2,该树结点中共有20个指针域为空,则该树有()个叶结点。A.10B.9C.21D.2210.在一个图G中,
所有顶点的度数之和等于所有边数之和的()倍。A.1/2B.2C.4D.111.邻接表是图的一种()。A.索引存储结构B.顺序存储结构C.散列存储结构D.链式存储结构12.图的深度优先遍历算法类似于二叉树的()遍历。A.后序B.层
次C.先序D.中序13.已知下图所示的一个图,若从顶点V1出发,按深度优先搜索法进行遍历,则可能得到的一种顶点序列为()。A.V1V2V4V8V3V5V6V7B.V1V3V6V7V2V4V5V8C.V
1V2V4V5V8V3V6V7D.V1V2V4V8V5V3V6V714.已知如下图所示的一个图,若从顶点a出发,按广度优先搜索法进行遍历,则可能得到的一种顶点序列为()。A.aebcfdB.aecbdfC.aedfcbD.abecdf15.图状结构中数据元素的位置之间存在()的关系。A.一对多
B.每一个元素都有一个且只有一个直接前驱和一个直接后继C.一对一D.多对多16.在一棵二叉树中,若编号为i的结点存在右孩子,则右孩子的顺序编号为()。A.2i-1B.2i+1C.2iD.2i+217.一棵具有16个结点的完全二叉树,共有()层。(设根结点在第一层)A.4B.5
C.6D.718.对二叉排序树进行()遍历,可以使遍历所得到的序列是有序序列。A.中序B.按层次C.后序D.前序19.已知一个图的边数为m,则该图的所有顶点的度数之和为()。A.m/2B.2m+1C.2mD.m二、判断题(每小题1分,共10分)20.一棵二叉树的叶结点(终端结
点)数为5,单分支结点数为2,该树共有11个结点。(√)21.一棵有14个结点的完全二叉树,则它的最高层上有7个结点。(√)22.一棵二叉树有6个叶结点,则该树总共有11个结点。(×)23.根据搜索方法的不同,图的遍历有.先序;中序;后序三种方法。(×)24.对于一棵具有n
个结点的二叉树,其相应的链式存储结构中共有n-1个指针域空。(×)25.设一棵完全二叉树,其最高层上最右边的叶结点的编号为奇数,该叶结点的双亲结点的编号为10,该完全二叉树一共有21个结点。(√)26.设一棵完全二叉树,其最高层上最右边的叶结点的编号
为偶数,该叶结点的双亲结点的编号为9,该完全二叉树一共有19个结点。(×)27.按照二叉树的递归定义,对二叉树遍历的常用算法有深度优先遍历和深度优先遍两种方法。(×)28.一棵有8个权重值构造的哈夫曼数,共有17个结点。(×)29.一棵有7个叶结点的二叉树,
其1度结点数的个数为2,则该树共有15个结点。(√)三、程序填空题(每空6分,共12分。请点击正确选项,然后拖拽至相应的方框上)30.以下程序是后序遍历二叉树的递归算法的程序,完成程序中空格部分(树结构中左、右指针域分别为left和right,数据
域data为字符型,BT指向根结点)。完成程序中空格部分。voidInorder(structBTreeNode*BT){if(BT!=NULL){Inorder(BT->left);(Inorder(BT‑>right))(printf(“%c”,BT‑>data))}利用上述程序对左图进行
后序遍历,结果是(d,e,b,f,c,a);Inorder(BT‑>right)d,e,b,f,c,aprintf(“%c”,BT‑>data)31.以下程序是中序遍历二叉树的递归算法的程序,完成程序中空格部分(树结构中左、右指针域分别为left和right,数据域data为字符
型,BT指向根结点)。voidInorder(structBTreeNode*BT){if(BT!=NULL){Inorder(BT->left);}(printf(“%c”,BT‑>data));(Inorder(BT‑>rig
ht));}利用上述程序对右图进行中序遍历,结果是(d,b,e,a,f,c);d,b,e,a,f,cprintf(“%c”,BT‑>data)Inorder(BT‑>right)四、综合应用题(每小题8分,5题,共40分)32.(1)
以3,4,5,8,9,作为叶结点的权,构造一棵哈夫曼树。该树的带权路径长度为()。A,64B.65C.62D.66(2)权重为3的叶结点的哈夫曼编码为()。A.010B.0101C.000D.011133.(1)以2,3,4,7,8,9作
为叶结点的权,构造一棵哈夫曼树,该树的带权路径长度为()。A,66B.80C.62D.87(2)权重值为4的叶结点的哈夫曼编码为()。A.0001B.1110C.001D.11034.(1)已知某二叉树的后序遍历序列是
debca,中序遍历序列是dbeac,该二叉树的根结点是()。A.eB.cC.bD.a(2)先序遍历序列是()。A.e,b,c,d,aB.c,a,b,,d,eC.a,b,d,e,cD.a.c,b,d,e,35.(1)已知某二叉树的先序遍历序列是
aecdb,中序遍历序列是eadcb,该二叉树的根结点是();A.eB.cC.bD.a(2)后序遍历序列为()。A.e,d,b,c,aB.c,a,b,,d,eC.a,b,d,e,cD.a.c,b,d,e,36.(1)以给定权重值5,6,17,18,25,30,为叶结
点,建立一棵哈夫曼树,该树的中序遍历序列为()。A.5,11,28,6,17,58,30,101,18,43,25B.5,11,6,28,17,58,30,101,18,43,25C.5,11,6,28,
101,58,30,17,18,43,25D.5,11,6,28,17,58,30,101,18,25,43(2)权重值为6的叶结点的哈夫曼为回答.A.1001B.011C.001D.0001形考作业4一、单项选
择题(每小题2分,共40分)1.对线性表进行二分查找时,要求线性表必须()。A.以链接存储方式B.以顺序存储方式C.以顺序存储方式,且数据元素有序D.以链接存储方式,且数据元素有序2.采用顺序查找方法查找长度为n的线性表时,每个元素的平均查
找长度为()。A.nB.(n-1)/2C.n/2D.(n+1)/23.有一个长度为10的有序表,按折半查找对该表进行查找,在等概率情况下查找成功的平均比较次数为()。A.29/10B.31/10C.29/9D.26/104.已知一个有序
表为{11,22,33,44,55,66,77,88,99},则顺序查找元素55需要比较()次。A.5B.6C.4D.35.有数据{53,30,37,12,45,24,96},从空二叉树开始逐个插入数据来形成二叉排序树,若希望高度最小,应该选择的序列是()。A.37,24,12,30,53,45,
96B.12,24,30,37,45,53,96C.45,24,53,12,37,96,30D.30,24,12,37,45,96,536.对于顺序存储的有序表{5,12,20,26,37,42,46,50,64},若采用折半查找,则查找元素26的比较次数是()。A.
4B.3C.5D.67.在所有的排序方法中,关键字比较的次数与记录初始排列秩序无关的是()。A.直接插入排序B.冒泡排序C.希尔排序D.直接选择排序8.从未排序序列中依次取出元素与已经排好序的序列中的元素作比较。将其放入已排序序列的正确的位置上,此方法称为(
)。A.插入排序B.选择排序C.交换排序D.归并排序9.依次将每两个相邻的有序表合并成一个有序表的排序方法称为()。A.选择排序B.归并排序C.插入排序D.交换排序10.当两个元素出现逆序的时候就交换位置,这种排序方
法称为()。A.交换排序B.归并排序C.选择排序D.插入排序11.每次把待排序的区间划分为左、右两个子区间,其中左区间中记录的关键字均小于等于基准记录的关键字,右区间中记录的关键字均大于等于基准记录的关键字,这种排序称为()
。A.快速排序B.归并排序C.插入排序D.堆排序12.一组记录的关键字序列为(46,20,30,79,56,38,40,84,90,110),利用快速排序,以第一个关键字为分割元素,经过一次划分后结果为()。
A.30,20,40,38,46,84,56,79,90,100B.20,30,40,38,46,79,56,84,90,100C.40,20,30,38,46,56,79,84,90,110D.20,3038,40,4
6,56,79,84,90,10013.在有序表{10,14,34,43,47,64,75,80,90}中,用折半查找法查找值80时,经()次比较后查找成功。A.3B.2C.4D.514.对序列(49,38,65,97,76,13,47,50)采用直接插入排序法进行排序,要把第七个元素47插入
到已排序中,为寻找插入的合适位置需要进行()次元素间的比较。A.5B.6C.4D.315.排序方法中,从未排序序列中挑选元素,并将其依次放入已排序序列(初始为空)的一端的方法,称为()排序。A.选择B.插入C.归并D.快速16.一组记录的关键字序列为(26,59,36,18,20,25),
利用堆排序的方法建立的初始小根堆为()。A.18,20,25,59,26,36B.18,20,36,59,26,25C.26,59,36,18,20,25D.26,18,59,20,36,2517.一组记录的关键字序列为(25,48,16,35,79,82,23,40,36,
72),其中,含有5个长度为2的有序表,按归并排序的方法对该序列进行一趟归并后的结果为()。A.16,25,48,35,79,82,23,36,40,72B.16,25,35,48,79,23,36,40,82,72C.16,25,3
5,48,23,40,79,82,36,72D.16,25,35,48,79,82,23,36,40,7218.已知10个数据元素为(54,28,16,34,73,62,95,60,26,43),对该数列从小到大排序,经过一趟冒泡排序后的序列为()。A.28,16
,34,54,62,73,60,26,43,95B.16,28,34,54,73,62,60,26,43,95C.16,28,34,54,62,60,73,26,43,95D.28,16,34,54,62,60,73,26,43,9519
.一组记录的关键字序列为(46,79,56,38,40,84),利用快速排序,以第一个关键字为分割元素,经过一次划分后结果为()。A.40,38,46,79,56,84B.40,38,46,84,56,79C.38,40,46,56,79,84D.40,38,46,56,79,84
20.一组记录的关键字序列为(80,57,41,39,46,47),利用堆排序(堆顶元素是最小元素)的方法建立的初始堆为()。A.39,46,41,57,80,47B.39,47,46,80,41,57C.41,39,46,47,57,80D.39,80,46,47,41,57二、程序填空
题(每题10分,2题,共20分。请点击正确选项,然后拖拽至相应的方框上)21.以下函数是二叉排序树的查找算法,若二叉树为空,则返回根结点的指针,否则,返回值是指向树结点的结构指针p(查找成功p指向查到的树结点,不成功p指向为NULL)完成程序中的空格typedefstructBnod
e{intkey;structBnode*left;structBnode*right;}Bnode;Bnode*BSearch(Bnode*bt,intk)/*bt用于接收二叉排序树的根结点的指针,k用以接收要查找的关键字*/{Bn
ode*p;if(bt==(NULL))return(bt);p=bt;while(p->key!=(k)){if(k<p->key)(p=p‑>left);else(p=p>‑>right);if(p==NULL)break;}return((p);}
p=p‑>leftNULLp=p>‑>rightpk22.以下程序是折半插入排序的算法设待排序的记录序列存放在a[1],…a[n]中,以a[0]作为辅助工作单元,程序是要把a[i]插入到已经有序的序列a[1],…a[i-1]中。voidbinsort(NODEa[],i
ntn){intx,i,j,s,k,m;for(i=2;i<=(n);i++){a[0]=a[i];x=a[i].key;s=1;j=i-1;while(s<=j){m=((s+j)/2)if(x<a[m].key)(j=m‑1)e
lse(s=m+1)}for(k=i-1;k>=j+1;k--)(a[k+1])=a[k];a[j+1]=a[0];}}(s+j)/2j=m‑1a[k+1]ns=m+1三、综合题(每小题8分,共40分)
23.(1)设查找表为(1,10,11,14,23,27,29,55,68),画出对上述查找表进行折半查找所对应的判定树,为了成功查找到元素14,需要依次与元素()进行比较。A.23,10,1,14B.23,29,27,14
C.23,10,11,14D.23,29,55,14(2)在等概率条件下,成功查找的平均比较次数为()。A.24/9B.25/9C.3D.2.524.(1)一组记录的关键字序列为(47,80,57,39,41,46),利用堆排
序的方法建立的初始堆为()(堆顶元素是最小元素,采用树的形式建堆)。A.39,41,57,80,47,46B.39,41,46,80,47,57C.39,47,46,80,41,57D.39,41,57,80,46,47(2)输出堆顶元素后,调整后的堆为()。A.41,47
,46,80,57B.41,57,46,80,47C.41,57,80,47,46D.41,80,46,47,5725.(1)对关键字序列(56,51,71,54,46,106),利用快速排序,以第一个关键字为分割元素,经过一次划分后结果为();A.46,51,56,54,71,106B.
56,51,54,46,71,106C.46,51,54,56,71,106D.56,51,46,54,71,106(2)一组记录的关键字序列为(60,47,80,57,39,41,46,30),利用归并排序的方法,经过(2,2)归并的结果序列为()。A.(
30,57,60,80,47,39,41,46)B.(47,60,57,80,30,39,41,46)C.(41,57,60,80,30,39,47,46)D.(47,57,60,80,30,39,41,46)26.(1)对关键字序列(36,69,46,28,30,74)采用快速排序,以第一个关
键字为分割元素,经过一次划分后的结果序列为()。A.30,28,46,36,69,74B.28,30,36,46,69,74C.28,30,46,36,69,74D.30,28,36,46,69,74(2
)用冒泡法对上述序列排序,经两趟冒泡的结果序列为()。A.36,28,30,46,69,74B.36,46,28,20,69,74C.38,36,30,46,69,74D.28,36,30,46,69,7427.(1)一组记录的关
键字序列为{45,40,65,43,35,95}写出利用快速排序的方法,以第一个记录为基准得到的一趟划分的结果为();A.354065453595B.354065434595C.354043456595D.
354045436595(2)对上述序列利用直接插入排序,逐次插入过程中,共进行了回答次元素间的比较。A.8B.11C.9D.10