牛客网-题目分享(4)

题目1:栈和链表是两种不同的数据结构()。正确答案: A  

正确
错误

解析:

栈和链表是两种不同的数据结构。 栈是逻辑结构的概念,是特殊殊线性表,而链表是存储结构概念,二者不是同 类项

题目2:

若有以下定义和语句:

1

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

则不能表示a数组元素的表达式是:() 。 正确答案: B  

*p
a[10]
*a
a[p-a]

解析:

A:相当于a[0]

B:以为数组的下标从0开始,所以10越界。

C:相当于a[0]

D:p和a指向同一个数组,可以做加减法(如果p和a不是指向同一数组则会出错),得到的值为整数。此题为0。所以D也相当于a[0]。

题目3:

在最好情况下,下列排序算法中 排序算法时间复杂度最低的是。

正确答案: B 

基数排序
直接插入排序
快速排序
归并排序

解析:

牛客网-题目分享(4)

 

题目4:

在二叉排序树(二叉搜索树)中,最小值结点的( )。

正确答案: A  

左孩子一定为空指针
右孩子一定为空指针
左、右指针均为空
左、右指针均不为空

解析:

对于二叉树排序,左子树值一定比节点值小,右子树值一定比节点值大,因节点值是最小值,则其没有左子树

题目5:

对关键码序列28,16,32,12,60,2,5,72快速排序(最常用的快速排序,以第一个关键码为基准),使用挖坑法,从小到大一次划分结果为()

正确答案: D  

(2,5,12,16)28(60,32,72)
(2,16,5,12)28(60,32,72)
(2,16,12,5)28(60,32,72)
(5,16,2,12)28(60,32,72)

解析:

原始为:

28 16 32 12 60 2 5 72

i是左到右找小于28数,j是右到左找小于28数,j先动。

j找到5,i动找到32。两者互换。有:

28 16 5 12 60 2 32 72

j找到2,i找到60互换有:

28 16 5 12 2 60 32 72

j i相遇,i和28换位子:

2 16 5 12 28 60 32 72

结果是B。

题目6:

某字符串满足:concat(head(s),head(tail(tail(s))))="ac",(head,tail的定义同广义表),则S=()

正确答案: C  

aabc
acba
accc
acac

解析:

概念解释:广义表L=(A,B,C),表头是A,表尾是(B,C),这是定义。

tail()表示取字符串的尾部,head()表示取字符串的头,concat()表示字符串拼接。

取两次尾部一次头部,然后合并,答案是C。

题目7:

判断下列说法是否正确:设有两个串S1和S2,求S2在SI中首次出现位置的运算称为求子串。( )

正确答案: B  

正确
错误

解析:

应属于模式匹配

题目8:

执行完下列语句段后,i值为()

1

2

3

4

5

int f(int x){

    return ((x>0)?x*f(x-1):2)

}

int i;

i=f(f(2));

正确答案: B  

4
48
8
无限递归

解析:

f(x) 当x大于0时,返回x*f(x-1),否则返回2

f(0) = 2

f(1) = 1 * f(0) = 2

f(2) = 2 * f(1) = 4

f(3) = 3 * f(2) = 12

f(4) = 4 * f(3) = 48

f(4) = f(f(2))   = 48

选B

题目9:

在一般情况下,采用压缩存储后,对称矩阵是所有特殊矩阵中存储空间节约最多的,这样的说法正确吗?

正确答案: B   你的答案: B (正确)

正确
不正确

解析:

稀疏矩阵,0元素远多于非0元素且非0元素分布没有规律。比如一个矩阵只有零散的两个1,其他元素都是0,那压缩存储的时候只需要记录这两个非0元素的位置(行,列)还有值(1)就可以了,其他元素都是0。

题目10:

将一个递归算法改为对应的非递归算法时,通常需要使用(  )。

正确答案: D   你的答案: A (错误)

优先队列
队列
循环队列
栈

解析:

递归之所以可以采用非递归方法实现是因为可以用栈的方式
如果你采用递归时 是由系统管理函数栈
而要写成非递归时必须由你自已来管理一个栈.