牛课网-题目分享5

题目1:

设指针变量top指向当前链式栈的栈顶,则删除栈顶元素的操作序列为()。

正确答案: D  

top=top+1;
top=top-1;
top->next=top;
top=top->next;

详解:

首先注意题目中说的是链式,所以排除AB; 然后C选项形成了一个环; D选项,让top跳过原来的top指向下一个位置(一般是null),原top指的那个没人指了,即为删除原top

题目:

只有那种使用了局部变量的递归过程在转换成非递归过程时才必须使用栈()

正确答案: B  

对
错

详解:

递归工作栈里面包括返回地址、本层的局部变量和递归调用的形参代换用实参,所以正常情况下,无论递归过程有没有使用局部变量,转换为非递归过程都需要用栈来模拟这个递归调用过程。

题目:

以下程序段的运行结果是(   )。

1

2

char str[10] = "output";

printf("\"%s\"\n", str);

正确答案: B  

output
"output"
\"output\"
编译错误

详解:

\n     换行
\r     回车
\f     换页符
\b     退格
\0     空格
\s     字符串
\t     制表符                                                                                                                                                                                         \”     双引号             
\’     单引号
\ddd     八进制字符串(ddd)
\uxxxx     16进制unicode字符串(xxxx)

题目:

串'ababaaababaa'的next数组为

正确答案: C  

012345678999
012121111212
011234223456
012301232234

详解:

牛课网-题目分享5

题目:

递归函数中的形参是()

正确答案: A  

自动变量
外部变量
静态变量
可根据需要自定义存储类型

详解:

首先要理解的是递归是借助栈来实现的,自动变量是存储在栈里面的,随着递归的进行,自动创建和销毁
外部变量和静态变量存放在静态存储区。外部变量和静态变量是不能作为递归函数的参数的。那么有同学会问了,为什么呢?首先,如果可以,那还要这个参数干什么呢?直接函数内改变不就行了?其次,递归的过程中,会创建变量存放在栈顶,如果是静态变量,递归结束后是不会被销毁的,如果忘记了,那就会造成空间很大的浪费。想想是不是不合理呢?编译器会禁止这么用的。
最后,自动变量可以大体上等价于局部变量。但也不完全相同

题目:

将一个A[1..100,1..100]的三对角矩阵,按行优先存入一维数组B[1..298]中,A中元素A6665 (即该元素下标i=66,j=65),在B数组中的位置K为()供选择的答案:

正确答案: B  

198
195
197

详解:

先假设每行都有三个,66行就198个,减去第一行一个剩下197个,然后算最后一行,第65列所处的位置是三个数的第一个,所以还要再减去2。即66*3-(3-(65-1)%3)-1=195

题目:

已知一稀疏矩阵的三组元表为:(1,2,3),(1,6,1),(3,1,5)(3,2,-1),(5,4,5)(5,1,-3),则其转置矩阵的三元组表中第3个三元组为()

正确答案: A  

(2, 1, 3)
(3, 1, 5)
(3, 2, -1)
(2, 3, -1)

详解:

http://wenku.baidu.com/link?url=6JA9-A-UT3kmslX1Ba5uTWhd9kbAifAdPNO1zrWO5RHWDBoAD9rquSPqAn4cmNTx0Bnzu3zQftTDzGK5sda64PwO48JwSkIlJaK0c781PBq

这个ppt讲解的很详细,大家可以参考一下。

题目:

输入序列ABCABC经过栈操作变成ABCCBA,下面哪些是可能的栈操作?

正确答案: A D  

push pop push pop push pop push push push pop pop pop
push push push push push push pop pop pop pop pop pop
push push push pop pop pop pushpush pop pop push pop
push push push push pop pushpop push pop pop pop pop

暂无解析

题目:

已知数组D的定义是int D[4][8];,现在需要把这个数组作为实参传递给一个函数进行处理。下列说明汇总可以作为对应的形参变量说明的是()。

正确答案: C D  

int D[4][]
int *s[8]
int(*s)[8]
int D[][8]

详解:

二维数组在内存中也是连续存储的,他可以通过 arr[i][j]寻址是因为我们定义了这个数组有多少列,
加入有N列,这样数组寻址的时候编译器会自动得到 *(arr+(j*N)+i)所以传参数的时候列数必须指定。
所以D正确A不正确。B表示有8个指向int指针的数组,不对,而C中(*s)等价于s[]。因此答案CD;

题目:

Which of the following statements are true?

正确答案: A C D  

We can create a binary tree from given inorder and preorder traversal sequences.
We can create a binary tree from given preorder and postorder traversal sequences.
For an almost sorted array, insertion sort can be more effective than Quicksort.
Suppose T(n) is the runtime of resolving a problem with n elements, T(n) = Θ(1) if n = 1; T(n) = 2T(n/2) + Θ(n) if > 1; so T(n) is Θ(n log n).
None of the above.

详解:

 

牛课网-题目分享5