燕山大学2006年数据结构真题一.按要求完成下列各题(60分)1.判断对错(10分)(1)所谓数据结构的逻辑结构是指数据元素之间的逻辑关系.(2)从逻辑关系上讲,数据结构主要分为三大类:线性结构,非线性结构和集合.(3)同一数据逻辑结构中的所有数据元素都具有相同的特性是指数据元素所包含的数据项的个数都相等.(4)数据结构可以形式化的定义为(K,R),其中K是数据元素的有限集合,R是K上运算的有限集合.(5)在一个算法中不允许出现死循环.2.求出如下程序的order()函数时间复杂度(10分)inta[]={2,5,1,7,9,3,6,8}order(intj,intm){intI,temp;if(jm){for(i=j;i=m;i++)if(a[i]a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}j++;order(j,m);}}main(){intI;order(0,7);for(i=0:i=7:i++)printf(“%d”,a[j])}3.设有一个双端队列,元素进入该队列的顺序是1,2,3,4.试分别求出满足下列条件的输出序列.(10分)(1)能由输入受限的双端队列得到,但不能由输出受限的双端队列得到的输出序列;(2)能由输出受限的双端队列得到,但不能由输入受限的双端队列得到的输出序列;(3)既不能由输入受限的双端队列得到,又不能由输出受限的双端队列得到的输出序列.4.已知二叉树中有11个结点,其结点的先序遍历序列,中序遍历序列和后序遍历序列中的一部分分别如下:先序遍历序列:…b…f…iceh…g;中序遍历序列:d…kfia…ejc…;后序遍历序列:…k…fbhj…g…a(10分)(1)画出这棵二叉树;(2)写出全先序遍历,中序遍历和后序遍历的结果;(3)把该二叉树转化成一个森林.5.事件结点网络如下图所示.(1)求出各活动的最早开始时间和允许的最晚完成时间;(2)求哪些活动是关键活动和对应的关键路径.(20分)二.写出下列各题的结果(20分)1.n个结点的m叉树转化为二叉树所需存储资源比未转化前用定长结点存储节省多少?(设链域占两个单元,数据域占一个单元)2.设s=’IAMASTUDENT’,j=’GOOD’,q=’WORKER’,求Replace(s,’STUDENT’,q)?3.含有12个结点的平衡二叉树的最大深度是多少?4.设A是一个线性表(a1,a2,…,an),采用顺序存储结构,若在ai和ai-1(这里i和i-1是下标)之间(0=i=n-1)插入一个元素的概率为2(n-1)/n(n+1),平均插入一个元素所需要移动的元素个数是多少?三.完成下列各题(25分)1.已知一个含有100个记录的表,关键字为中国姓氏的拼音.给出此表的一个哈稀表的设计方安,要求它在等概率情况下查找成功的平均查找长度不超过3.(10分)2.证明二叉排序树用中序遍历输出的信息是从小到大排列的.(15分)四.阅读下面程序,回答问题.(15)voidAA(intA[1…500],intn){intl,j,x;b=ture;i=1;while(in)&&b{b=false;for(j=1;j___(1)___;j++)if___(2)___{x=A[j];A[j]=A[j+1];A[j+1]=x;___(3)___;}i++;}}(1)在_____中添上正确的语句,使该过程完成预期的功能.(2)该过程使用的是什么排序方法?(3)当数组A的元素初始时已按值递增排列,在该程序中会执行多少次比较?多少次交换?五.按要求写出下列算法(30分)1.二叉树采用链式存储结构,设计一个递归算法计算一个给定二叉树的所有结点数.(10分)2.编写一个实现连通图G的深度优先搜索(从顶点V出发)的非递归算法.(20分)V1V2V4V3a1=4a2=2a3=3a5=6a4=4