2018年北京师范大学生命科学学院978数据结构考研仿真模拟五套题
● 摘要
一、填空题
1. 阅读下列程序,指出其功能,并写出空格处应填上的语句。
【答案】
【解析】本题是在哈希表中插入值为item 的元素,如该元素已在哈希表中,报告出错。
2. 以下程序的功能是实现带附加头结点的单链表数据结点逆序连接,请填空完善之。
h 为附加头结点指针
(_____)
_____;
【答案】(1)p!=NULL //链表未到尾就一直进行 (2)q //将当前结点作为头结点后的第一元素结点插入
3. 在顺序存储的二叉树中,编号为i 和j 的两个结点处在同一层的条件是_____。
【答案】要加“虚结点”。
设编号为i 和j 的结点在顺序存储中的下标为s 和t , 则结点i 和j 在同一层上的条件是
。
4. 顺序栈用
存储数据,栈顶指针是top ,则值为x 的元素入栈的操作是_____。
第 2 页,共 58 页
【解析】用顺序存储结构存储二叉树时,要按完全二叉树的形式存储,非完全二叉树存储时,
【答案】if(top!=n)data[++top]=x ;
【解析】先判断栈是否满,如果不满,元素入栈。否则返回溢出信息。
5. 二进制地址为011011110000, 大小为和块的伙伴地址分别为:_____
【答案】011011110100;011011100000
【解析】011011110000是块的起始地址,大小分别为算公式如下:
当大小为4时,起始地址为011011110000+0100。当大小为16时,起始地址为:011011110000-010000。
6. 下面程序的功能是用递归算法将一个整数按逆序存放到一个字符数组中。如123存放成321。请填空:
(_____i);
=
_____.
_____
【答案】a +l ;n%10
【解析】通过递归算法,首先找到最高位的值,将其放到str 对应的数组中,依次反向获取从高位到地位的值,将其放到数组中,完成了将整数逆序放到一个字符数组中。
7. 设二维数组A 的行和列的下标范围分别为[0:8]和[0:10],每个元素占2个单元,按行优先顺序存储,第一个元素的存储起始位置为b ,则存储位置为b+50处的元素为_____。
【答案】A[2][3]
【解析】令这个元素的行标为i ,列标为j 。则它的存储位置是(ll*i+j +l ﹣l)*2+b 。当其值为b +50时,则i =2,j =3。
8. 下列程序是快速排序的非递归算法,请填写适当的语句,完成该功能。
第 3 页,共 58 页
和其伙伴块的起始地址计
a 中存放待排序的关键字
【答案】
【解析】快速排序(quick sort)的基本思想是,通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。
9. 中缀式(c-d)对应的前缀式为_____,若a=l,b=2, c=3, d=4, 则后缀式运算结果为_____。
【答案】
【解析】中缀式相当于中序遍历,前缀式相当于前序遍历,后缀式相当于后序遍历。
10.属于不稳定排序的有_____。
【答案】希尔排序、简单选择排序、快速排序、堆排序等
11.求图的最小生成树有两种算法,_____算法适合于求稀疏图的最小生成树e
【答案】克鲁斯卡尔
【解析】克鲁斯卡尔算法是一种按权值的递增次序选择合适的边来构造最小生成树的方法,这种算法中,采用堆来存放边的集合,适合于边稀疏而顶点较多的图。
12.表达式23+((12*3﹣2)/4+34,5/7) +108/9的后缀表达式是_____。
【答案】
(表达式中的点(.)是数分隔符,如
是三个数)
的
第 4 页,共 58 页