(37)A. 从A[i]开始直到A[1],每个数向后移动一个位置
B. 从A[1]开始直到A[i],每个数向后移动一个位置
C. 从A[i]开始直到A[N],每个数向前移动一个位置
D. 从A[N]开始直到A[i],每个数向后移动一个位置
● 若某二叉树的先序遍历序列和中序遍历序列分别为PBECD、BEPCD,则该二叉树的后序遍历序列为(38)。
(38)A.PBCDE B.DECBP C.EBDCP D.EBPDC
● 无向图的邻接矩阵一定是(39)。
(39)A. 对角矩阵 B. 稀疏矩阵 C. 三角矩阵 D. 对称矩阵
● 对具有n个元素的有序序列进行二分查找时,(40)。
(40)A. 查找元素所需的比较次数与元素的位置无关
B. 查找序列中任何一个元素所需要的比较次数不超过log2(n+1)
C. 元素位置越靠近序列后端,查找该元素所需的比较次数越少
D. 元素位置越靠近序列前端,查找该元素所需的比较次数越少
三、2007年上半年
●若将下图(a)所示的无向图改为完全图,则还需要增加(36)条边;下图(b)的邻接矩阵表示为(37)(行列均以A、B、C、D、E为序)。
(36)A.1B.2C.5D.15
(37)
●若线性表(23,14,45,12,8,19,7)采用散列法进行存储和查找。
设散列函数为H(Key)=Keymod7并采用线性探查法(顺序地探查可用存储单元)解决冲突,则构造的散列表为(38),其中,mod表示整除取余运算。
(38)
●在执行递归过程时,通常使用的数据结构是(39)。
(39)A.堆栈(stack)B.队列(queue)C.图(graph)D.树(tree)
●用二分法来检索数据,最确切的说法是(40)。
(40)A.仅当数据随机排列时,才能正确地检索数据
B.仅当数据有序排列时,才能正确地检索数据
C.仅当数据量较大时,才能有效地检索数据
D.仅当数据量较小时,才能有效地检索数据
●若原始数据序列(23,4,45,67,12,8,19,7)采用直接插入排序法(顺序地将每个元素插入到它之前的适当位置)排序,则进行完第4趟后的排序结果是(41)。
(41)A.4,8,45,23,67,12,19,7B.4,7,8,12,23,45,67,19
C.4,12,8,19,7,23,45,67D.4,12,23,45,67,8,19,7
●对下图所示的二叉树进行后序遍历(左子树、右子树、根结点)的结果是(42)。
(42)A.523461B.523416C.264135D.256431
●数组A[-5..5,0..8]按列存储。
若第一个元素的首地址为100,且每个元素占用4个存储单元,则元素A[2,3]的存储地址为(43)。
(43)A.244B.260C.364D.300
四、2007年下半年
●n个元素依次全部进入栈后,再陆续出栈并经过一个队列输出。
那么,(36)。
(36)A.元素的出队次序与进栈次序相同
B.元素的出队次序与进栈次序相反
C.元素的进栈次序与进队次序相同
D.元素的出栈次序与出队次序相反
●若一个栈以向量V[1..n]存储,且空栈的栈顶指针top为n+1,则将元素x入栈的正确操作是(37)。
(37)A.top=top+1;V[top]=x;B.V[top]=x;top=top+1;
C.top=top-1;V[top]=x;D.V[top]=x;top=top-1;
●广度优先遍历的含义是:
从图中某个顶点v出发,在访问了v之后依次访问v的各个未被访问过的邻接点,然后分别从这些邻接点出发依次访问它们的邻接点,且“先被访问的顶点的邻接点”先于“后被访问的顶点的邻接点”被访问,直至图中所有已被访问的顶点的邻接点都被访问到。
(38)是下图的广度优先遍历序列。
(38)A.126345B.123456C.165234D.164523
●对于长度为11的顺序存储的有序表,若采用折半查找(向下取整),则找到第5个元素需要与表中的(39)个元素进行比较操作(包括与第5个元素的比较)。
(39)A.5B.4C.3D.2
●与单向链表相比,双向链表(40)。
(40)A.需要较少的存储空间B.遍历元素需要的时间较短
C.较易于访问相邻结点D.较易于插入和删除元素
●如果待排序序列中两个元素具有相同的值,在排序前后它们的相互位置发生颠倒,则称该排序算法是不稳定的。
(41)是稳定的排序方法,因为这种方法在比较相邻元素时,值相同的元素并不进行交换。
(41)A.冒泡排序B.希尔排序C.快速排序D.简单选择排序
●对下图所示的二叉树进行中序遍历(左子树、根、右子树)的结果是(42)。
(42)A.253461B.253416
C.265413 D.264531
●采用一维数组S存储一个n阶对称矩阵A的下三角部分(按行存放,包括主对角线),设元素A[i][j]存放在S[k]中(i、j、k均从1开始取值),且S[1]=A[1][1],则k与i、j的对应关系是(43)。
例如,元素A[3][2]存在S[5]中。
(43)A.
B.
C.
D.
五、2008年上半年
●若二维数组P[1..5,0..8]的首地址为base,数组元素按行存储,且每个元素占用1个存储单元,则元素P[3,3]在该数组空间的地址为(32)。
(32)A.base+13B.base+16C.base+18D.base+21
●设初始栈为空,s表示入栈操作,x表示出栈操作,则(33)是合法的操作序列。
(33)A.sxxsssxxxB.xxssxxssC.sxsxssxxD.xssssxxx
●满二叉树的特点是每层上的结点数都达到最大值,因此对于高度为h(h>1)的满二叉树,其结点总数为(36)。
对非空满二叉树,由根结点开始,按照先根后子树、先左子树后右子树的次序,从1、2、3、…依次编号,则对于树中编号为i的非叶子结点,其右子树的编号为(37)(高度为3的满二叉树如下图所示)。
(36)A.2B.2h-1C.2h–1D.2h-1+1
(37)A.2iB.2i-1C.2i+1D.2i+2
●在数据结构中,结点(数据元素)及结点间的相互关系组成数据的逻辑结构。
按逻辑结构的不同,数据结构通常可分为(38)两类。
(38)A.线性结构和非线性结构B.紧凑结构和稀疏结构
C.动态结构和静态结构D.内部结构和外部结构
●采用哈希(或散列)技术构造查找表时,需要考虑冲突(碰撞)的处理,冲突是指(39)。
(39)A.关键字相同的记录被映射到不同的哈希地址
B.关键字依次被映射到编号连续的哈希地址
C.关键字不同的记录被映射到同一个哈希地址
D.关键字的数目超过哈希地址的数目
●数据结构中的树最适合用来表示(40)的情况。
(40)A.数据元素有序B.数据元素之间具有多对多关系
C.数据元素无序D.数据元素之间具有一对多关系
●某循环队列的容量为M,队头指针指向队头元素,队尾指针指向队尾元素之后,如下图所示(M=8),则队列中的元素数目为(41)(MOD表示整除取余运算)。
(41)A.rear–frontB.front–rear
C.(rear–front+M)MODMD.(front–rear+M)MODM
●二叉排序树或者是一棵空树,或者是具有如下性质的二叉树:
若其左子树非空,则左子树上所有结点的值均小于根结点的值;若其右子树非空,则右子树上所有结点的值均大于根结点的值;其左、右子树本身就是两棵二叉排序树。
根据该定义,对一棵非空的二叉排序树进行(42)遍历,可得到一个结点元素的递增序列。
(42)A.先序(根、左、右)B.中序(左、根、右)
C.后序(左、右、根)D.层序(从树根开始,按层次)
●对于n个元素的关键字序列{k1,k2,…,kn},若将其按次序对应到一棵具有n个结点的完全二叉树上,使得任意结点都不大于其孩子结点(若存在孩子结点),则称其为小顶堆。
根据以上定义,(43)是小顶堆。
六、2008年下半年
●设数组a[1..6,0..9]的元素以行为主序存放,每个元素占用一个存储单元,则数组元素a[3,3]的地址为(34)。
(34)A.a+23B.a+27C.a+39D.a+35
●若字符串s的长度为n(n>1)且其中的字符互不相同,则s的长度为2的子串有(35)个。
(35)A.nB.n-1C.n-2D.2
●若线性表(24,13,31,6,15,18,8)采用散列(Hash)法进行存储和查找,设散列函数为H(Key)=Keymod11,则构造散列表时发生冲突的元素为(36)。
(其中的mod表示整除取余运算)
(36)A.24和13B.6和15C.6和24D.18和8
●线性表采用顺序存储结构,若表长为m,且在任何一个合法插入位置上进行插入操作的概率相同,则插入一个元素平均移动(37)个元素。
●若二叉树的先序遍历序列与中序遍历序列相同且树中结点数大于1,则该二叉树的(38)。
(38)A.只有根结点无左子树B.只有根结点无右子树
C.非叶子结点只有左子树D.非叶子结点只有右子树
●由关键字序列(12,7,36,25,18,2)构造一棵二叉排序树(初始为空,第一个关键字作为根结点插入,此后对于任意关键字,若小于根结点的关键字,则插入左子树中,若大于根结点的关键字,则插入右子树中,且左、右子树均为二叉排序树),该二叉排序树的高度(层数)为(39)。
(39)A.6B.5C.4D.3
●对连通图进行遍历前设置所有顶点的访问标志为false(未被访问),遍历图后得到一个遍历序列,初始状态为空。
深度优先遍历的含义是:
从图中某个未被访问的顶点v出发开始遍历,先访问v并设置其访问标志为true(已访问),同时将v加入遍历序列,再从v的未被访问的邻接顶点中选一个顶点,进行深度优先遍历;若v的所有邻接点都已访问,则回到v在遍历序列的直接前驱顶点,再进行深度优先遍历,直至图中所有顶点被访问过。
(40)是下图的深度优先遍历序列。
(40)A.123465B.126345C.162543D.123456
●栈的运算特点是后进先出。
元素a、b、c、d依次入栈,则不能得到的出栈序列是(41)。
(41)A.abcdB.cabdC.dcbaD.bcda
●两个递增序列A和B的长度分别为m和n(m(42)A.当A的最大元素大于B的最大元素时
B.当A的最大元素小于B的最小元素时
C.当A的最小元素大于B的最小元素时
D.当A的最小元素小于B的最大元素时
●在任意一棵非空的二叉树中,终端结点(叶子)的数目总是比具有两个孩子的非终端结点的数目(43)。
(43)A.多0个B.多1个C.多2个D.多3个
七、2009年上半年
●以下关于排序算法的叙述中,正确的是(36)。
(36)A.冒泡排序法中,元素的交换次数与元素的比较次数一定相同
B.冒泡排序法中,元素的交换次数不少于元素的比较次数
C.简单选择排序中,关键字相同的两个记录在排序前后的相对位置一定不变
D.简单选择排序中,关键字相同的两个记录在排序前后的相对位置可能交换
●设有一个初始为空的栈,若输入序列为1、2、3、…、n(n>3),且输出序列的第一个元素是n-1,则输入序列中所有元素都出栈后,(37)。
(37)A.元素n-2一定比n-3先出栈
B.元素1~n-2在输出序列中的排列是不确定的
C.输出序列末尾的元素一定为1
D.输出序列末尾的元素一定为n
●某二叉树的先序遍历序列为ABFCDE、中序遍历序列为BFADCE,则该二叉树根的左孩子和右孩子结点分别是(38)。
(38)A.B和FB.F和BC.B和CD.C和B
●调用递归过程或函数时,处理参数及返回地址需要用一种称为(39)的数据结构。
(39)A.队列B.栈C.多维数组D.顺序表
●已知对称矩阵An*n(Ai,j=Aj,i)的主对角线元素全部为0,若用一维数组B仅存储矩阵A的下三角区域的所有元素(不包括主对角线元素),则数组B的大小为(40)。
(40)A.n(n-1)B.n2/2C.n(n-1)/2D.n(n+1)/2
●设S是一个长度为5的字符串,其中的字符各不相同,则计算S中互异的非平凡子串(非空且不同于S本身)数目的算式为(41)。
(41)A.5+4+3+2+1B.5+4+3+2C.4+3+2+1D.4+3+2
●折半(二分)查找方法对查找表的要求是(42)。
(42)A.链表存储结构,元素有序排列B.链表存储结构,元素无序排列
C.顺序存储结构,元素有序排列D.顺序存储结构,元素无序排列
●若无向连通图G具有n个顶点,则以下关于图G的叙述中,错误的是(43)。
A.G的边数一定多于顶点数
B.G的生成树中一定包含n个顶点
C.从G中任意顶点出发一定能遍历图中所有顶点
D.G的邻接矩阵一定是n阶对称矩阵
●算法是问题求解过程的精确描述,它为解决某一特定类型的问题规定了一个运算过程。
以下关于算法的叙述中,错误的是(62)。
(62)A.流程图(flowchart)是算法的一种图形表示方法
B.用伪代码描述的算法易于转换成程序
C.用N/S盒图可以保证算法的良好结构(即由顺序、选择和重复结构来表示算法)
D.用E-R图可以同时描述算法步骤和数据模型
●下表列出了数字0~9的某种二进制编码值及其在某类应用中出现的概率,这种编码的平均位数大约为(63)。
八、2009年下半年
●设数组a[0..m,1..n]的每个元素占用1个存储单元,若元素按行存储,则数组元素a[i,j](0≤i≤m,1≤j≤n)相对于数组空间首地址的偏移量为(32)。
(32)A.(i+1)*n+jB.i*n+j-1C.i*m+jD.i*(m+1)+j-1
●算术表达式a+b*(c+d/e)可转换为后缀表达式(35)。
(35)A.abcde*/++B.abcde/+*+C.abcde*+/+D.abcde/*++
●以下关于算法的叙述中,错误的是(36)。
(36)A.对同一个算法采用不同程序语言实现,其运行时间可能不同
B.在不同硬件平台上实现同一个算法时,其运行时间一定是相同的
C.对非法输入的处理能力越强的算法其健壮性越好
D.算法最终必须由计算机程序实现
●栈和队列都是线性的数据结构。
以下关于栈和队列的叙述中,正确的是(37)。
(37)A.栈适合采用数组存储,队列适合采用循环单链表存储
B.栈适合采用单链表存储,队列适合采用数组存储
C.栈和队列都不允许在元素序列的中间插入和删除元素
D.若进入栈的元素序列确定,则从栈中出来的序列也同时确定
●(38)并不是算法必须具备的特性。
(38)A.可行性B.可移植性C.确定性D.有穷性
●若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点(即叶子结点)个数是(39)。
(39)A.不确定B.9C.11D.15
●对具有n个元素的顺序表(采用顺序存储的线性表)进行(40)操作,其耗时与n的大小无关。
A.在第i(1<=i<=n)个元素之后插入一个新元素
B.删除第i(1<=i<=n)个元素
C.对顺序表中的元素进行排序
D.访问第i(1<=i<=n)个元素的前驱和后继
●以下关于图及其存储结构的叙述中,正确的是(41)。
A.无向图的邻接矩阵一定是对称的
B.有向图的邻接矩阵一定是不对称的
C.无向图采用邻接表存储更节省存储空间
D.有向图采用邻接表存储更节省存储空间
●对于n个元素的关键字序列K1,K2,…,Kn,若有Ki<=K2i且Ki<=K2i+1(i=1,2,…,
2i+1<=n),则称其为小根堆。
以下关于小根堆及其元素关系的叙述中,错误的是(42)。
(42)A.关键字序列K1,K2,…,Kn呈非递减排序时一定为小根堆
B.小根堆中的序列K1,K2,K4,…,K2j(2j<=n)一定为非递减序列
C.小根堆中元素K2i与K2i+1(2i<=n,2i+1<=n)之间的大小关系不能确定
D.小根堆的最后一个元素一定是序列的最大元素
●若构造哈希表时不发生冲突,则给定的关键字与其哈希地址之间的对应关系是(43)。
(其中n>1且m>1)
(43)A.1:
1B.1:
nC.n:
1D.n:
m
九、2010年上半年
●若在单向链表上,除访问链表中所有结点外,还需在表尾频繁插入结点,那么采用(31)最节省时间。
(31)A.仅设尾指针的单向链表B.仅设头指针的单向链表
C.仅设尾指针的单向循环链表D.仅设头指针的单向循环链表
●表达式“a*(b–c)+d”的后缀式为(32)。
(32)A.abcd*-+B.ab*c-d+C.ab-cd+*D.abc-*d+
●已知某二叉树的先序遍历序列是ABDCE,中序遍历序列是BDAEC,则该二叉树为(33)。
●对于二维数组a[1..6,1..8],设每个元素占2个存储单元,且以列为主序存储,则元素a[4,4]相对于数组空间起始地址的偏移量是(34)个存储单元。
(34)A.28B.42C.48D.54
●已知某带权图G的邻接表如下所示,其中表结点的结构为:
则图G是(35)。
(35)A.无向图B.完全图C.有向图D.强连通图
●已知栈S初始为空,对于一个符号序列a1a2a3a4a5(入栈次序也是该次序),当用I表示入栈、O表示出栈,则通过栈S得到符号序列a2a4a5a3a1的操作序列为(36)。
(36)A.IOIIOOIOOIB.IIOIOIOIOO
C.IOOIIOIOIOD.IIOIIOIOOO
●队列是一种按“先进先出”原则进行插入和删除操作的数据结构。
若初始队列为空,输入序列为abcde,则可得到的输出序列为(37)。
(37)A.abcdeB.abdceC.edcbaD.edabc
●对于n个元素的关键字序列{k1,k2,...,kn},当且仅当满足关系
时称为小根堆(小顶堆)。
以下序列中,(38)不是小根堆。
(38)A.12,20,36,48,25,50,40B.12,36,20,48,40,25,50
C.12,20,25,36,40,48,50D.12,36,20,48,25,50,40
十、2010年下半年
●以下关于哈希表的叙述中,错误的是(36)。
(36)A.哈希表中元素的存储位