文章目录

  • 每日一练
  • 8.1
  • 8.2
  • 8.3
  • 8.4
  • 8.5
  • 8.6
  • 8.7
  • 8.8
  • 8.9
  • 8.10
  • 8.11
  • 8.12
  • 8.13
  • 8.14
  • 8.15
  • 8.16
  • 8.17
  • 8.18
  • 8.19
  • 8.20
  • 8.21
  • 8.22
  • 8.23
  • 8.24
  • 8.25
  • 8.26
  • 8.27
  • 8.28
  • 8.29
  • 8.30
  • 8.31


每日一练

8.1

  • 下面代码的执行结果是?
public class ShortSet {
    public static void main(String[] args) {
        Set t = new HashSet();
        for (Short i = 0; i < 100; i++) {
            s.add(i);
            s.remove(i - 1);
        }
        System.out.println(s.size());
    }
}

A. 1

B. 100

C. Throws Exception

D. None of the Above

【答案】B

【解析】i是Short类型 i-1是int类型,其包装类为Integer,所以s.remove(i-1);不能移除Set集合中Short类型对象。

8.2

  • 二叉树的前序遍历序列中,任意一个结点均处在其孩子结点的前面,这样的说法正确吗?

A. 正确

B. 不正确

【答案】A

8.3

  • **已知10*12的二维数组A以行序为主序进行存储,每个元素占1个存储单元,已知A[1][1]的存储地址为 420,则A[5][5]的存储地址为( )。(注:10行,12列,数组下标从1开始。)

A. 470

B. 471

C. 472

D. 473

【答案】C

8.4

  • 对于有n个顶点的有向图,由费罗伊德(Floyd)算法求每一对顶之间的最短路径的时间复杂度是( )。

A. O(1)

B. O(n)

C. O(n^2)

D. O(n^3)

【答案】D

8.5

  • 数组ARR=[1,2,3,4,5],以下返回值为5的是( )。

A. arr.push(1)

B. arr.pop()

C. arr.shift()

D. arr.unshift(1)

【答案】B

8.6

  • 模式串的长度是m,主串的长度是n(m<n),使用KMP算法匹配的时间复杂度是()?

A. O(m + n)

B. O(mn)

C. O(mlgn)

D. O(nlgm)

【答案】A

8.7

  • 链表不具有的特点是:

A. 不必事先估计存储空间

B. 可随机访问任一元素

C. 插入删除不需要移动元素

D. 所需空间与线性表长度成正比

【答案】B

【解析】A 采用动态存储分配,不会造成内存浪费和溢出。B 不能随机访问,查找时要从头指针开始遍历。C 插入、删除时,只要找到对应前驱结点,修改指针即可,无需移动元素。D 需要用额外空间存储线性表的关系,存储密度小。

8.8

  • 在字符串前面加上_____符号,则字符串中的转义字符将不被处理。

A. @

B. \

C. #

D. %

【答案】B

8.9

  • 设有一个顺序栈S,元素a b c d e f依次进栈,如果6个元素出栈的顺序是b d c f e a,则栈的容量至少应该是()。

A. 2

B. 3

C. 5

D. 6

【答案】3

【解析】a b [出栈] c d [出栈] [出栈] e f [出栈] [出栈] [出栈]

8.10

  • 对于一个头指针为 head 的带头结点的单链表,判断该表为空的条件是( )。

A. head == null

B. head->next == NULL

C. head->next = head

D. head != NULL

【答案】B

8.11

  • 有A,B,C,D,E五个字符,出现的频率分别为2,5,3,3,4,由A,B,C,D,E生成的最优二叉树中,该树的带权路径长是()。

A. 35

B. 49

C. 39

D. 45

【答案】C

【解析】5*2 + (3+4)*2 + (2+3)*3 = 10+14+15 = 39

8.12

  • 设有一个 10 阶的下三角矩阵 A (包括对角线),按照行优先的顺序存储到连续的 55 个存储单元中,每个数组元素占 1 个字节的存储空间,则 A[5][4] 地址与 A[0][0] 的地址之差为( )。

A. 10

B. 19

C. 28

D. 55

【答案】B

【解析】

[0][0]
[1][0] [1][1]
[2][0] [2][1] [2][2]
[3][0] [3][1] [3][2] [3][3]
[4][0] [4][1] [4][2] [4][3] [4][4]
[5][0] [5][1] [5][2] [5][3] [5][4]

8.13

  • 有一个有序表为 {1,3,9,12,32,41,45,62,75,77,82,95,100},当折半查找值为82的结点时,()次比较后查找成功。

A. 1

B. 4

C. 2

D. 8

【答案】B

【解析】left = 0, right = 12, mid = 6, a[6] = 45, left = mid + 1 = 7

left = 7, right = 12, mid = 9, a[9] = 77, left = mid + 1 = 10

left = 10, right = 12, mid = 11, a[11] = 95, right = mid - 1 = 10

left = 10, right = 10, mid = 10, a[10]命中

8.14

  • 对记录序列{314,298,508,123,486,145}按从小到大的顺序进行插入排序,经过两趟排序后的结果为

A. {314,298,508,123,145,486}

B. {298,314,508,123,486,145}

C. {298,123,314,508,486,145}

D. {123、298,314,508,486,145}

【答案】B

8.15

  • 栈是一种。

A. 存取受限的线性结构

B. 存取不受限的线性结构

C. 存取受限的非线性结构

D. 存取不受限的非线性结构

【答案】A

【解析】栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线性表。

8.16

  • 以下哪种排序是稳定的?

A. 希尔排序

B. 堆排序

C. 冒泡排序

D. 快速排序

【答案】C

8.17

  • 字符序列(‘D’,’Q’, ‘U’, ‘I’, ‘A’, ’N’)只能是下列哪个排序算法两趟排序后的结果?

A. 选择排序

B. 冒泡排序

C. 插入排序

D. 堆排序

【答案】C

8.18

  • 有ABCDEF六个城市,每一个城市都和其他所有城市直接相连,问从A——B有多少种连接方式? (每个城市至多被经过1次)

A. 78

B. 65

C. 43

D. 以上都错

【答案】B

【解析】24+24+12+4+1=65

经过4个城市: 4*3*2*1=24

经过3个城市: 4*3*2=24

经过2个城市: 4*3=12

经过1个城市: 4

不经过任何城市: 1

8.19

  • 设栈的顺序存储空间为S(1:m) ,初始状态为top=0。现经过一系列正常的入栈与退栈操作后, top=m+1,则栈中的元素个数为()

A. top = m + 1 不会发生

B. m + 1

C. 0

D. m

【答案】A

8.20

  • 已知一个二叉树中,度为0的节点数为50,度为1的节点数为30,则总节点数为()。

A. 81

B. 129

C. 130

D. 无法确定

【答案】B

【解析】n0+n1+n2 = n、n1 + 2n2 = n-1,因此n2 - n0 = -1

8.21

  • 下列哪些语句关于内存回收的说明是正确的。

A. 程序员必须创建一个线程来释放内存

B. 内存回收程序负责释放无用内存

C. 内存回收程序允许程序员直接释放内存

D. 内存回收程序可以在指定的时间释放内存对象

【答案】B

【解析】垃圾收集器在一个Java程序中的执行是自动的,不能强制执行,即使程序员能明确地判断出有一块内存已经无用了,是应该回收的,程序员也不能强制垃圾收集器回收该内存块。程序员唯一能做的就是通过调用System. gc 方法来”建议”执行垃圾收集器,但其是否可以执行,什么时候执行却都是不可知的。

8.22

  • 以下代码的输出结果是什么?
public static void main(String[] args) { 
    Object obj = new Object() { 
        public int hashCode() { 
            return 42; 
        } 
    }; 
    System.out.println(obj.hashCode()); 
}

A. 42

B. An exception is thrown at runtime.

C. Compilation fails because of an error on line 12.

D. Compilation fails because of an error on line 16.

【答案】A

【解析】匿名内部类覆盖hashCode方法。

8.23

  • 由3个结点可以构造出多少种不同的二叉树?

A. 2

B. 3

C. 4

D. 5

【答案】D

8.24

  • 假设二叉排序树的定义是: 1、若它的左子树不为空,则左子树所有节点均小于它的根节点的值; 2、若右子树不为空,则右子树所有节点的值均大于根节点的值; 3、它的左右子树也分别为二叉排序树。 下列哪种遍历之后得到一个递增有序数列?

A. 前序遍历

B. 中序遍历

C. 后序遍历

D. 层序遍历

【答案】B

8.25

  • 二叉树的第k层的结点数最多为?

A. 2^k - 1

B. 2K+1

C. 2K-1

D. 2^(k-1)

【答案】D

8.26

  • 一个含有n个顶点和e条边的简单无向图,在其邻接矩阵存储结构中共有多少个0元素?

A. e

B. 2e

C. n^2 - e

D. n^2 -2e

【答案】D

8.27

  • 设哈希表长为8,哈希函数为 Hash (key)=key%7,初始记录关键字序列为(32,24,15,27,20,13),用链地址法作为解决冲突方法的平均查找长度是?

A. 1.4

B. 1.5

C. 1.6

D. 1.7

【答案】B

【解析】32%7=4, 24%7=3, 15%7=1, 27%7=6, 20%7=6, 13%7=6 AST = (1+1+1+1+2+3)/6=1.5

8.28

  • 实现java.lang.Runnable接口的类必须定义哪个方法?

A. void run()

B. public void run()

C. public void start()

D. void run(int priority)

E. public void run(int priority)

F. public void start(int priority)

【答案】B

【解析】实现Runnable接口,接口中有一个抽象方法run,实现类中实现该方法。

8.29

  • char的数值范围是多少?

A. 0 … 32767

B. 0 … 65535

C. –256 … 255

D. –32768 … 32767

E. Range is platform dependent.

【答案】B

【解析】在Java中,char是一个无符号16位类型,取值范围为0到65535。

8.30

  • 某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是()

A. 10

B. 8

C. 6

D. 4

【答案】C

【解析】N = N0 + N1 + N2 = N1 + 2N2 + 1 (n条边对应n+1个点),即N0 = N2 + 1,那么有N0 = 5 + 1 = 6

8.31

  • 在一个具有n个结点的有序单链表中插入一个新结点并保持该表有序的时间复杂度是()

A. O(1)

B. O(n)

C. O(n^2)

D. O(lgn)

【答案】B