练习题
1.一个栈的输入序列为12345,则属于该栈的输出序列是()
A、23415
B、54132
C、31245
D、14253
此题答案为:A
分析:栈的特点是先进栈的元素后出栈,但不排除一进栈之后直接出栈,A选项解释如下:1先进栈,2
进栈然后出栈,3进栈后出栈,4进栈后出栈,1出栈,5进栈然后出栈 出栈顺序如下:23415
B选项54先出栈,进栈顺序可能是12345依次进栈,然后出栈,1不可能出栈排在32的前面,所以B选项
错误
C选项3先出栈,2已经进栈,并没有出栈,2会压在1前面出栈
D选项1出栈之后,4出栈,2、3也已经进栈,2不会先于3出栈
2.链表的每一个节点恰好是一个指针()
A、正确
B、错误
本题答案为B
分析:单链表的节点相当于一个指针,此处说是链表,也可能是双链表,一个指针指向前驱,一个指针
指向后继。
3.数组由于链表的特点()
A、方便删除
B、方便插入
C、长度可变
D、存储空间小
本体答案为 :D
分析:动态数组的删除需要,将删除的位置元素进行覆盖,遍历数组之后进行覆盖;
插入:需要根据角标进行插入,其次数组一旦创建长度固定,即使是动态数组也需要进行扩容或者缩
容,由于创建是长度固定,相对于链表存储空间小。
4.设一组初始记录关键字序列为(345,253,674,924,627),则用基数排序需要进行()趟的分配和回收才能使得初始关键字序列变成有序序列。
A、3
B、4
C、5
D、8
本体答案为:A
分析:基数排序又称为“桶子排序”,第一次现根据各位数将数字分别分到0到9的桶子里,第二次再根据
十位数分到0到9的桶子里,第三次根据百位数将数字分到0到9的桶子里,将桶子里的数值串联起来就是
拍好的数字,需要进行三次分配。
5.为了使用快速排序算法,待排序的序列宜采用的存储方式为()
A、顺序存储
B、散列存储
C、链式存储
D、索引存储
本体答案为:A
分析:快速排序的特点是选区一个关键数据,比它小的数据放在左边,比它大的数据放在右边,从i=0出
开始找,找到一个比关键数据大的数跟J交换,此处的J角标为序列的长度减一,arr[i]与arr[j]进行交换;
顺序存储:将一块连续的存储单元用于存储数据,用角标体现节点之间的逻辑存储关系,交换方便;
链式存储:将数据存储于不连续的存储空间中,通过指针建立节点之间的逻辑存储关系,交换不方便;
索引存储:在建立存储结点信息外,还需要建立附加的索引表来标识结点的地址,增加了索引表,占用
较大存储空间;
散列存储:将数据元素的存储位置与关键码之间建立确定对应关系的查找技术
,由关键码确定数据的存储位置。
6.关于二分查找叙述正确的是()
A、表必须有序,表可以顺序方式存储,也可以链表方式存储
B、表必须有序且表中数据必须是整型,实型或字符型
C、表必须有序,而且只能从小到大排列
D、表必须有序,且表只能以顺序方式存储
本体答案为:D
分析:二分查找要求:表必须按照顺序存储结构存储,表必须有序,表中顺序不一定都是从小到大排列
数据类型 不能是字符型
7.有时为了避免某些未识别的异常抛给更高的上层应用,在某些接口实现中我们通常需要捕获编译运行期所有的异常, catch 下述哪个类的实例才能达到目的:()
A、Error
B、Exception
C、RuntimeException
D、Throwable
本体答案为:B
分析:error 出错代表系统出错,catch无法处理,Runtime Exception不需要程序员进行捕获处理,error
和Exception是throw able的子类,只需要对Exception进行捕获处理即可
8.静态链表中指针表示的是()
A、下一个元素的地址
B、内存储器的地址
C、下一元素在数组中位置
D、左链或右链指向的元素的地址
本体答案为:C
静态链表定义是有数组描述的链表,静态链表有数据域和游标组成,游标模拟指针,下一个元素在数组
中的位置
9.执行以下程序结果是()
public class Test {
private String name = "abc";
public static void main(String[] args) {
Test test = new Test();
Test testB = new Test();
String result = test.equals(testB) + ",";
result += test.name.equals(testB.name) + ",";
result += test.name == testB.name;
System.out.println(result);
}
}
A、true,true,true
B、true,false,false
C、false,true,false
D、false,true,true
本体答案为:D
分析:test与test B是两个对象,所以为false,test.name与testB.name字符串内容相同返回为true,
test.name == testB.name;test与test B都指向栈中的内存位置“abc",返回结果为true
10.若数组A[0…m-1][0…n-1]按列优先顺序存储,则aij地址为( )
A、LOC(a00)+[jm+i]
B、LOC(a00)+[jn+i]
C、LOC(a00)+[(j-1)*n+i-1]
D、LOC(a00)+[(j-1)*m+i-1]
本体答案为:A
分析:题中给出了优先按列顺序存储,m行,n列,LOC(a00)+[J*m+i],j列有每个元
素.