数据结构试题库答案.doc

格式: doc 页数: 27 文件大小: 0MB 侵权/举报
数据结构试题库答案.doc

数据结构试题库答案.doc

格式: doc 页数: 27 文件大小: 0MB
数据结构试题库答案.doc 数据结构试题及答案 一、单项选择题 (1) 一个算法应该是( )。 A) 程序 B) 问题求解步骤的描述 C) 要满足五个基本属性 D) A 和 C (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) 下列程序的时间复杂度为(   ) i=0;s=0; while(s<n) { i++;s=s+i;} A) O( n ) B) O( n2 ) C) O(n) D) O(n2) (8) 下列程序段的渐进时间复杂度为( )。 for( int i=1;i<=n;i++) for( int j=1;j<= m; j++) A[i][j] = i*j ; A)O(m2) B)O(n2) C)O(m*n) D)(m+n)   (9) 程序段如下: sum=0; for(i=1;i<=n;i++) for(j=1;j<=n;j++) sum++; 其中 n 为正整数,则最后一行的语句频度在最坏情况下是( )。 A)O(n) B) O(nlogn) C) O(n3) D) O(n2)   (10) 在下面的程序段中,对 x 的赋值语句的频度为( )。 for ( i=1; i>=n ; i++) for ( j=1; j>=n ; j++) x:=x+1; A) O(2n) B)O(n) C) O(n2) D) O(log2n) (11) 程序段 for ( i:=n-1; i<=1; i--) for ( j:=1; j>=i ; j++) if (a[j]>a[j+1] ) { t=a[j]; a[j]= a[j+1]; a[j+1]= t; } 其中 n 为正整数,则最后一行的语句频度在最坏情况下是( )。 A) O(n) B) O(nlogn) C) O(n3) D) O(n2) (12) 设有一个递归算法如下: int fact(int n) { /* 大于等于 0 */ if ( n<=0 ) return 1 ; else return n*fact (n-1) ; } 则计算 fact(n)需要调用该函数的次数为( )。 A) n B) n+1 C) n+2 D) n-1 (13) 下述程序段中语句①的频度是(   )。 s=0; for(i=1;i<m;i++) for(j=0;j<=i;j++) s+=j; A) 2 11 )m)(m(  B) 2 1)m(m  C) 2 12 )m)(m(  D) 2 1)m(m  (14) 若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则最 节省运算时间的存储方式是(   )。 A)单链表 B)仅有头指针的单循环链表 C)双链表 D)仅有尾指针的单循环链表 (1) 求循环链表中当前结点的后继和前驱的时间复杂度分别是(  )。 A) O(n)和 O(1) B) O(1)和 O(1) C) O(1)和 O(n) D) O(n)和 O(n) (15) 求单链表中当前结点的后继和前驱的时间复杂度分别是(  )。 A) O(n)和 O(1) B) O(1)和 O(1) C) O(1)和 O(n) D) O(n)和 O(n) (16) 非空的单循环链表的头指针为 head,尾指针为 rear,则下列条件成立的是(  )。 A) rear->next= =head B) rear->next->next= =head C) head->next= =rear D) head->next->next= =rear (17) 从一个长度为 n 的顺序表中删除第 i 个元素(1≤i≤n)时,需向前移动的元素的个数是( )。 A)n-i B)n-i+1 C)n-i-1 D)i (18) 已知一个有序表为(13,18,24,35,47,50,62,83,90,115,134),当二分检索值 为 90 的元素时,检索成功需比较的次数是(  )。 A)1 B)2 C)3 D)4 (19) 假设以行优先顺序存储三维数组 R[6][9][6],其中元素 R[0][0][0]的地址为 2100,且每个元 素占 4 个存储单元,则存储地址为 2836 的元素是(  )。 A) R[3][3][3] B) R[3][3][4] C) R[4][3][5] D) R[4][3][4] (20) 设有一个 10 阶的对称矩阵 A,采用压缩存储方式以行序为主序存储,a00 为第一个元素, 其存储地址为 0,每个元素占有 1 个存储地址空间,则 a45 的地址为(  )。 A) 13 B) 35 C) 17 D) 36 (21) 线性表采用链式存储时,节点的存储的地址( )。 A) 必须是不连续的 B) 连续与否均可 C) 必须是连续的 D) 和头节点的存储地址相连续 (22) 用链表表示线性表的优点是( )。 A) 便于随机存取 B) 花费的存储空间比顺序表少 C) 数据元素的物理顺序与逻辑顺序相同 D) 便于插入与删除 (23) 链表不具有的特点是( ) 。 A) 插入、删除不需要移动元素 B) 可随机访问任一元素 C) 不必事先估计存储空间 D) 所需空间与线性长度成正比 (24) 在长度为 n 的顺序表中删除第 i 个元素(1≤i≤n)时,元素移动的次数为( )。 A) n-i+1     B) i   C) i+1      D) n-i (25) 采用顺序搜索方法查找长度为 n 的顺序表示,搜索成功的平均搜索长度为( )。 A) n    B) n/2   C) (n-1)/2      D) (n+1)/2 (26) 将长度为 n 的单链表链接在长度为 m 的单链表之后的算法的时间复杂度为( )。 A) O(1) B) O(n) C) O(m) D) O(m+n) (27) 若不带头结点的单链表的头指针为 head,则该链表为空的判定条件是( )。 A) head==NULL    B) head->next==NULL C) head!=NULL   D) head->next==head (28) 某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用 ( )存储方式最节省运算时间。 A) 单链表 B) 仅有头指针的单循环链表 C) 双链表 D) 仅有尾指针的单循环链表 (29) 若允许表达式内多种括号混合嵌套,则为检查表达式中括号是否正确配对的算法,通常选 用的辅助结构是(   )。 A) 栈 B) 线性表 C) 队列 D) 二叉排序树 (30) 顺序栈 S 中 top 为栈顶指针,指向栈顶元素所在的位置,elem 为存放栈的数组,则元素 e 进栈操作的主要语句为(   )。 A) s.elem[top]=e; s.top=s.top+1; B) s.elem[top+1]=e;s.top=s.top+1; C) s.top=s.top+1; s.elem[top+1]=e; D) s.top=s.top+1;s.elem[top]=e; (31) 循环队列 sq 中,用数组 elem[0··25]存放数据元素,sq.front 指示队头元素的前一个位置, sq.rear 指示队尾元素的当前位置,设当前 sq.front 为 20,sq.rear 为 12,则当前队列中的元 素个数为(   )。 A) 8 B) 16 C) 17 D) 18 (32) 链式栈与顺序栈相比,一个比较明显的优点是( )。 A) 插入操作更加方便 B) 通常不会出现栈满的情况 C) 不会出现栈空的情况 D) 删除操作更加方便 (33) 一个递归的定义可以用递归过程求解,也可以用非递归过程求解,但单从运行时间来看, 通常递归过程比非递归过程( )。 A) 较快 B) 较慢 C) 相同 D) 不定 (34) 若已知一个栈的入栈序列是 1,2,3,4……n,其输出序列为 p1,p2,p3,……pn,若 p1= =n,则 pi 为( )。 A) i B) n= =i C) n-i+1 D) 不确定 (35) 一个栈的入栈序列是 a,b,c,d,e,则栈的不可能的输出序列是( ) 。 A) edcba B) decba C) dceab D) abcde (36) 若进栈序列为 1,2,3,4,5,6,且进栈和出栈可以穿插进行,则不可能出现的出栈序列 是( )。 A) 2,4,3,1,5,6   B) 3,2,4,1,6,5 C) 4,3,2,1,5,6    D) 2,3,5,1,6,4 (37) 对于栈操作数据的原则是( )。 A) 先进先出 B) 后进先出 C) 后进后出 D) 不分顺序 (38)栈和队列的共同点是( )。 A) 都是先进先出 B) 都是先进后出 C) 只允许在端点处插入和删除元素 D) 没有共同点 (39) 一个队列的入队序列是 1,2,3,4,则队列的输出序列是( )。 A) 4,3,2,1 B) 1,2,3,4 C)1,4,3,2 D) 3,2,4,1 (40) 设数组 data[m]作为循环队列 SQ 的存储空间,front 为队头指针,rear 为队尾指针,则执行 出对操作后其头指针 front 值为( )。 A) front=front+1 B) front=(front+1)%(m-1) C) front=(front-1)%m D) front=(front+1)%m (41)引起循环队列队头位置发生变化的操作是( )。 A) 出队 B) 入队   C) 取队头元素 D) 取队尾元素 (2) 设以数组 A[m]存放循环队列的元素,其头尾指针分别为 front 和 rear,则当前队列中的元素 个数为( )。 A)(rear-front+m)%m B)rear-front+1 C)(front-rear+m)%m D)(rear-front)%m (42) 二维数组 A[12][18]采用列优先的存储方法,若每个元素各占 3 个存储单元,且 A[0][0]地址 为 150,则元素 A[9][7]的地址为( )。 A) 429      B) 432   C) 435       D) 438 (43) 设有一个 10 阶的对称矩阵 A[10][10],采用压缩方式按行将矩阵中下三角部分的元素存入 一维数组 B[]中,A[0][0]存入 B[0]中,则 A[8][5]在 B[]中( )位置。 A) 32 B) 33   C) 41 D) 65 (44) 若对 n 阶对称矩阵 A 以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依 次存放于一维数组 B[1..(n(n+1))/2]中,则在 B 中确定 aij(i<j)的位置 k 的关系为( )。 A) i*(i-1)/2+j B) j*(j-1)/2+i C) i*(i+1)/2+j D) j*(j+1)/2+i (45) 对稀疏矩阵进行压缩存储目的是( )。 A) 便于进行矩阵运算 B) 便于输入和输出 C) 节省存储空间 D) 降低运算的时间复杂度 (46) 对广义表 L=((a,b),(c,d),(e,f))执行操作 tail(tail(L))的结果是( )。 A) (e,f)     B) ((e,f))   C) (f)       D) ( ) (47) 设广义表 L=((a,b,c)),则 L 的长度和深度分别为( )。 A) 1 和 1 B) 1 和 3 C) 1 和 2 D) 2 和 3 (48)树中所有结点的度之和等于所有结点数加( )。 A) 0 B)1 C) -1 D) 2 (49) 在一棵具有 n 个结点的二叉链表中,所有结点的空域个数等于( )。 A) n B) n-1 C) n+1 D) 2*n (50) 某二叉树的先序序列和后序序列正好相反,则该二叉树一定是( )的二叉树。 A) 空或只有一个结点 B) 高度等于其节点数 C) 任一结点无左孩子 D) 任一结点无右孩子 (51)含有 10 个结点的二叉树中,度为 0 的结点数为 4,则度为 2 的结点数为(   ) A)3 B)4 C)5 D)6 (52) 除第一层外,满二叉树中每一层结点个数是上一层结点个数的(   ) A)1/2倍 B)1倍 C) 2倍 D) 3倍 (53) 对一棵有 100 个结点的完全二叉树按层编号,则编号为 49 的结点,它的父结点的编号为( ) A)24 B)25 C)98 D)99 (54) 可以惟一地转化成一棵一般树的二叉树的特点是(   ) A)根结点无左孩子 B)根结点无右孩子 C)根结点有两个孩子 D)根结点没有孩子 (55) 设高度为 h 的二叉树上只有度为 0 和度为 2 的结点,则此类二叉树中所包含的结点数至少 为( )。 A) 2h B) 2h-1 C) 2h+1 D) h+1 (56) 在一棵度为 3 的树中,度为 3 的节点个数为 2,度为 2 的节点个数为 1,则度为 0 的节点个 数为( )。 A) 4 B) 5 C) 6 D) 7 (57) 设森林 F 对应的二叉树为 B,它有 m 个结点,B 的根为 p,p 的右子树结点个数为 n,森林 F 中第一棵 子树的结点个数是( )。 A)m-n B)m-n-1 C) n+1 D) 条件不足,无法确定 (58) 将一株有 100 个节点的完全二叉树从上到下,从左到右依次进行编号,根节点的编号为 1,则编号为 49 的节点的 左孩子编号为()。 A) 98 B) 89 C) 50 D) 没有孩子 (59) 下列图示的顺序存储结构表示的二叉树是(A ) (60) 树 最适合用 来表示( )。 A) 有序数据元素 B) 无序数据元素 C) 元素之间具有分支层次关系的数据 D) 元素之间无联系的数据 (61) 在一个非空二叉树的中序遍历序列中,根结点的右边( )。 A) 只有右子树上的所有结点 B) 只有右子树上的部分结点 C) 只有左子树的上的部分结点 D) 只有左子树上的所有结点 (62) 任何一棵二叉树的叶结点在先序、中序和后序遍历序列中相对次序( )。 A) 不发生改变 B) 发生改变 C) 不能确定 D) 以上都不对 (63) 在有 n 个叶子结点的哈夫曼树中,其结点总数为( )。 ...