2018年军事医学科学院卫生勤务与医学情报研究所836计算机应用之数据结构考研强化五套模拟题
● 摘要
一、填空题
1. 对于双向链表,在两个结点之间插入一个新结点需修改的指针共_____个,单链表为_____个。
【答案】4;2
2. 在一个具有n 个单元的顺序栈中,假定以地址高端(即下标为n 的单元) 作为栈底,以top 作为栈顶指针,则当向栈中压入一个元素时,top 的变化是top =_____。
【答案】top ﹣1
【解析】由于栈底在地址高端,栈中压入一个元素时,栈顶向地址底端移动一个单位,所以top ﹣1。
3. 对单链表中元素按插入方法排序的C 语言描述算法如下,其中L 为链表头结点指针。请填充算法中标出的空白处,完成其功能。
:_____:
{_____)
(_____、
:_____;_____;p =u ;
【答案】(1)L﹣>next =NULL //置空链表,然后将原链表结点逐个插入到有序表中 (2)p!=NULL //当链表尚未到尾,p 为工作指针
(3)q!=NULL //查P 结点在链表中的插入位置,这时q 是工作指针 (4)p﹣>next =r ﹣>next //将P 结点链入链表中
(5)r﹣>next =p //r是q 的前驱,u 是下个待插入结点的指针
4. 空格串是指_____,其长度等于_____。
【答案】由空格字符(ASCII值32) 所组成的字符串;空格个数
第 2 页,共 35 页
5. 设数组址为_____。
【答案】9174;8788
的基地址为2000,每个元素占2个存储单元,若以行序为主序顺序存
储,则元素a[45,68]的存储地址为_____;若以列序为主序顺序存储,则元素a[45,68]的存储地
【解析】设一个元素的行标为i ,列标为j 。若以行序为主存储顺序,则它的存储地址为2000+((i﹣l)*80+j ﹣
1) 2。若以列序为主存储顺序,则它的存储地址为2000+((j﹣l)*50+i ﹣l)*2。
6. 下列程序是快速排序的非递归算法,请填写适当的语句,完成该功能。
a 中存放待排序的关键字
【答案】
【解析】快速排序(quick sort)的基本思想是,通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。
7. 二进制地址为011011110000, 大小为
【答案】011011110100;011011100000
【解析】011011110000是块的起始地址,大小分别为算公式如下:
和
其伙伴块的起始地址计
和块的伙伴地址分别为:_____
第 3 页,共 35 页
当大小为4时,起始地址为011011110000+0100。当大小为16时,起始地址为:011011110000-010000。
8. 设T 和P 是两个给定的串,在T 中寻找等于P 的子串的过程称为_____,又称P 为_____。
【答案】模式匹配;模式串
9. 在有n 个顶点的有向图中,每个顶点的度最大可达_____。
【答案】2(n-1)
【解析】当有向图为完全连通图时每个顶点的度达到最大,出度入度均为n -1。
10.数据结构中评价算法的两个重要指标是_____。
【答案】算法的时间复杂度和空间复杂度
11.在基于关键字比较且时间为
【答案】归并;堆
12.数组的存储结构采用_____存储方式。
【答案】顺序存储结构
【解析】数组本身的存储结构是线性的,也就是说它是连续存储的。
13.已知一循环队列的存储空间为,其中n >m ,队头和队尾指针分别为front 和rear ,则此循环队列判满的条件是_____
【答案】
14.根据线性表的链式存储结构中每一个结点包含的指针个数,将线性链表分成_____和_____;而又根据指针的连接方式,链表又可分成_____和_____。
【答案】单链表;双链表;(动态) 链表;静态链表
【解析】线性表的链式存储结构根据每个结点包含的指针个数分为单链表和双链表,单链表只包含一个指针,指向后续元素,双链表包括两个指针,指向前一个元素和后续元素。根据指针的连接方式,链表可分为动态链表和静态链表。静态链表的指针指向下一个元素的编号,动态链表的指针指向下一个元素的物理位置。
15.
线性表用数组表示,假定删除表中任一元素的概率相同,则删除一个元素平均需要移动元素的个数是_____。
【答案】(n﹣1)/2
第 4 页,共 35 页
_ 的排序中,若要求排序是稳定的,则可选用_____
排序;若要求就地排序(及辅助空间为O(1)),则可选用_____排序。