北航10秋学期《算法与数据结构》模拟题一
一、单项选择题(本大题共15小题,每小题2分,共30分)
1、顺序表是线性表的()
A.链式存储结构
B.顺序存储结构
C.索引存储结构
D.散列存储结构
2、循环链表主要优点是()
A.不再需要头指针了
B.已知某个结点的位置后,能够容易找到它的直接前趋
C.在进行插入、删除运算时,能更好地保证链表不断开
D.从表中任一结点出发都能扫描到整个链表
3、根据数据元素之间关系的不同特性,以下四类基本的逻辑结构反映了四类基本的数据组织形式。
以下解释错误的是()
A.集合中任何两个结点之间都有逻辑关系但组织形式松散
B.线性结构中结点按逻辑关系依次排列形成一条"锁链"
C.树形结构具有分支、层次特性,其形态有点像自然界中的树
D.图状结构中的各个结点按逻辑关系互相缠绕,任何两个结点都可以邻接
4、以下说法错误的是()
A.求表长、定位这二种运算在采用顺序存储结构时实现的效率不比采用链式存储结构时实现的效率低B.顺序存储的线性表可以随机存取
C.由于顺序存储要求连续的存储区域,所以在存储管理上不够灵活
D.线性表的链式存储结构优于顺序存储结构
5、以下说法错误的是()
A.每个存储结点只能存放一个数据元素
B.数据元素之间的关联方式可由存储结点之间的关联方式直接表达
C.一种存储结构可以在两个级别上讨论。
其一是机器级,其二是语言级
D.语言级描述可经编译自动转换成机器级因此也可以看成是一种机内表示
6、对一个由n个整数组成的序列,借助排序过程找出其中的最大值,希望比较次数和移动次数最少,应选用()方法
A.归并排序
B.直接插入排序
C.直接选择排序
D.快速排序。
7、在文件局部有序或文件长度较小的情况下,最佳的排序方法是()
A.直接插入排序
B.冒泡排序
C.直接选择排序
D.归并排序
8、对于C语言的二维数组DataType A[m][n],每个数据元素占K个存储单元,二维数组中任意元素a[i,j] 的存储位置可由()式确定.
A.Loc[i,j]=A[m,n]+[(n+1)*i+j]*k
B.Loc[i,j]=loc[0,0]+[(m+n)*i+j]*k
C.Loc[i,j]=loc[0,0]+[(n+1)*i+j]*k
D.Loc[i,j]=[(n+1)*i+j]*k
9、设有两个串(S1和S2),求S1在S2中首次出现的位置的运算称为()。
A. 连接
B. 模式匹配
C. 求子串
D. 求串长
10、算法分析的目的是()。
A. 找出数据结构的合理性
B. 研究算法中的输入和输出的关系
C. 分析算法的效率以求改进
D. 分析算法的易读性和文档性
11、如果待排序序列中两个数据元素具有相同的值,在排序后它们的位置发生颠倒,则称该排序是不稳定的。
下列选项中,()就是不稳定的排序方法。
A. 起泡排序
B. 归并排序
C. 直接插入法排序
D. 简单选择排序
12、顺序查找法适合于存储结构为()的线性表。
A. 散列表
B. 顺序存储或连接存储
C. 压缩存储
D. 索引存储
13、若给定的关键字集合为{20,15,14,18,21,36,40,10},一趟快速排序结束时,键值的排列为( )。
A. 10,15,14,18,20,36,40,21
B. 10,15,14,18,20,40,36,21
C. 10,15,14,20,18,40,36,21
D. 15,10,14,18,20,36,40,21
14、判定一个顺序栈(最多元素为m个)为空的条件是()。
A. top==0
B. top==m
C. top!=0
D. top!=m
15、设F是一个森林,B是由F转换得到的二叉树,F中有n个非叶结点,则B中右指针域为空的结点有()个。
A. n-1
B. n
C. n+1
D. n+2
二、判断题(本大题共10小题,每小题1分,共10分)
16、递归方法和递推方法本质上是一回事,例如求n! 时既可用递推的方法,也可用递归的方法。
(×)
17、用非递归方法实现递归算法时一定要使用递归工作栈。
(×)
18、将f = 1 + 1/2 + 1/3+ …+ 1/n转化为递归函数时,递归部分为f (n) = f (n-1) + 1/n,递归结束条件为f (1) = 1。
(√)
19、一个广义表的表头总是一个广义表。
(×)
20、一个广义表的表尾总是一个表。
(√)
21、若让元素1,2,3依次进栈,则出栈次序1,3,2是不可能出现的情况。
(×)
22、在用单链表表示的链式队列Q中,队头指针为Q->front,队尾指针为Q->rear,则队空条件为Q->front == Q->rear。
(×)
23、递归定义的数据结构通常用递归算法来实现对它的操作。
(√)
24、递归的算法简单、易懂、容易编写,而且执行效率也高。
(×)
25、递归调用算法与相同功能的非递归算法相比,主要问题在于重复计算太多,而且调用本身需要分配额外的空间和传递数据和控制,所以时间与空间开销通常都比较大。
(√)
三、填空题(本大题共8小题,每空2分,共30分)
26、具有n个结点的二叉树中,一共有_ 2n_个指针域,其中只有_ n-1__个用来指向结点的左右孩子,其余的_ n+1_个指针域为NULL。
27、从数据结构的观点看,通常所说的"数据"应分成三个不同的层次,即_ 数据_、数据元素和_ 数据项_。
28、按照排序过程涉及的存储设备的不同,排序可分为_ 内部_排序和外部_排序。
29、以下为顺序表的定位运算,分析算法,请在___处填上正确的语句。
int locate_sqlist(sqlist L,datatype X)
/*在顺序表L中查找第一值等于X的结点。
若找到回传该结点序号;否则回传0*/
{_ i=1 _;
while((i<=st)&&(L.data[i-1]!=X))i++;
if(_ I<=st _)return(i);
else return(0);
}
30、按照二叉树的定义,具有3个结点的二叉树有_ 5 _种。
31、对某二叉树进行前序遍历的结果为ABDEFC,中序遍历的结果为DBFEAC,则后序遍历的结果为_ DFEBCA _ 。
32、具有2000个节点的二叉树,其高度至少为____11______。
33、判定树的每个_ 非终端结点__包含一个条件,对应于一次比较或判断,每个
_ 终端结点__对应一种分类结果。
四、简答与应用题(本大题共5小题,每小题6分,共30分)
34、根据数据元素之间的关系的不同特征,通常分为哪几类基本结构?
考核知识点:基本结构的分类,参见P5
答:(1)、集合,结构中的暑假元素之间除了“同属于一个集合”的关系外,别无其他关系。
(2)、线性结构,结构中的数据元素之间存在一个对一个的关系。
(3)、树形结构,结构中的数据元素之间存在一个对多个的关系。
(4)、图状结构或者网状结构,结构中的数据元素之间存在多个对多个的关系。
35、空串和空格串是否是一个意思,如果不是请说明它们的区别?
考核知识点:串的定义,参见P70-72
答:它们不是一个意思。
空串表示:长度为0的串。
空格串表示:由一个或多个空格组成的串。
36、简述循环队列的类型定义。
考核知识点:循环队列的定义,参见P63-65
答:
#define MAXQSIZE 100
typedef struct {
int front;
int rear;
}SqQueue;
37、简述闭散列表的类型定义。
考核知识点:散列表的类型定义,参见P251-254
答:闭散列表是一个一维数组,其元素的类型与动态查找表中数据元素的类型一致:
#define maxsize闭散列表的容量
typedef struct
{ keytype key ;
....../*其他域*/
} element ;
typedef element closehash[ maxsize ] ;
38、给定表(19,14,22,01,66,21,83,27,56,13,10)。
(1)试按元素在表中的次序将它们依次插入一棵初始时为空的二叉排序树,画出插入完成之后的二叉排序树。
(2)按表中元素顺序构造一棵A VL树,并求其在等概率情况下查找成功的平均查找长度。
考核知识点:二叉排序树和平衡二叉树,参见P227-238
答:分析:平衡二叉树A VL要求二叉树上任何一个结点的平衡因子为-1,0,1,如有一个元素的平衡因子不是-1,0,1,此二叉树就不是平衡二叉树,必须通过调整把此二叉树变成平衡二叉树。
平衡二叉树是二叉树排序树(对结点数结点相同的二叉树)平均查找次数最小的一种二叉树。
成功平均查找长度为:ASL=( 1 +2 * 2 + 3 * 4 + 4 * 4 ) / 11 = 33 /11 = 3 .。