1、第 1 页 共 10 页华 东 交 通 大 学 2004 2005 学 年 第 1 学 期 考 试 卷数据结构 课程 课程类别:必修 闭卷题号 一 二 三 四 五 六 七 八 九 总 分分数评卷人一, 填空题(每空 1 分,共 20 分)1, 现有一个程序,它能够处理气象卫星收集的数据用来预测今后两天的天气,但是却要算上将近一个星期,故其在实践中应该来讲是没有什么意义的,不能称其为算法,因为它违背了算法的_可行性_。2, 若设 L 是带表头结点的单链表的表头指针,则语句 L-next= L-next-next的作用是_删除单链表的第一个结点_。 (其中 next 是节点指针域)3, 我国的权力
2、机构由各级人民代表大会组成,如果将所有代表大会当作一个数据整体,则根据我国的实际管理关系,用数据结构里面的术语,它们之间是_树状_关系。4, 在线性表的顺序存储实现中,假设线性表的长度为 n,则平均插入一个数据元素平均要移动元素的次数为_n/2_。 (假设元素插入到各个位置的概率相同)5, 后缀表达式“4 5 * 3 2 + - 4 -”的值为_11_ _。 (注意所有数都为 1 位个位数)6, 设有一个顺序栈 S,元素 s1, s2, s3, s4, s5, s6依次进栈,如果 6 个元素的出栈顺序为 s2, s3, s4, s6, s5, s1,则顺序栈的容量至少应为_3_。7, 设有关键
3、码序列(Q,H,C,Y,Q,A,M,S,R,D,F,X) ,要按照关键码值递增的次序进行排序,若采用步长为 5,3,1 的 Shell 排序法,则进行到步长为 3 之后,执行步长为 1 之前的结果是_A,D,C,M,H,F,Q,Q,X,R,S,Y_;若采用以 最后一个元素 为分界元素的快速排序法,则一趟扫描的结果是_Q,H,C,F,Q,A,M,S,R,D,X,Y_。8, 一个具有 567 个结点的完全二叉树,其叶子结点个数为_284_。 9, 一颗二叉树有 13 个结点,则这颗二叉树的高度最大为_14_,最小为_4_。10, 在 AOV 网中,顶点表示_活动_,边表示_活动间优先关系_。承诺:
4、我将严格遵守考场纪律,并知道考试违纪、作弊的严重性,承担由此引起的一切后果。 专业班级学号学生签名: 承诺:我将严格遵守考场纪律,并知道考试违纪、作弊的严重性,承担由此引起的一切后果。号学生签名:第 2 页 共 10 页11, 哈希表的装填因子含义_哈希表的装满程度_。12, 有一个整数有序序列(4,6,8,34,45,67,89,123) ,若采用二分查找,则查找 89 要进行_3_次比较。13, 一颗二叉树的叶结点分别为(4,6,7,2,5,67) ,则这颗树有_5_个度为 2 的结点。14, 用邻接矩阵存储图,占用存储空间数与图中顶点个数_有_关,与边数_无_关。二, 选择题(每题 2
5、分,共 20 分)1,一种抽象数据类型包括数据和( B )两个部分。A. 数据类型 B. 数据操作 C. 数据抽象 D. 类型说明 2,设循环队列中数组的下标范围是 0.n-1,其头尾的下标分别为 f 和 r,则其元素个数为( A ) 。A、(r - f+n) % n B、(r - f) % n+1 C、r - f+1 D、r - f3, 由权值分别为 3,8,6,2,2 的叶子结点生成一棵哈夫曼树,它的带权路径长度为( C )A 14 B 44 C 45 D 214, 以下序列中不符合堆定义的是_D_ _。 A(102,87,100,79,82,62,84,42,22,12,68) B(10
6、2,100,87,84,82,79,68,62,42,22,12) C(12,22,42,62,68,79,82,84,87,100,102) D(102,87,42,79,82,62,68,100,84,12,22)5, 解决散列法中出现的冲突问题常采用的方法是( D ) 。A. 数字分析法、除留余数法、平方取中法B. 数字分析法、除留余数法、线性探测法C. 数字分析法、线性探测法、双散列法D. 线性探测法、二次探测法、开放地址拉链法6, 设双向循环链表中结点的结构为(data, lLink, rLink) ,且不带表头结点。若想在指针 p 所指结点之后插入指针 s 所指结点,则应执行下列哪
7、一个操作?( D )A. p-rLink = s; s-lLink = p; p-rLink-lLink = s; s-rLink = p-rLink;B. p-rLink = s; p-rLink-lLink = s; s-lLink = p; s-rLink = p-rLink;C. s-lLink = p; s-rLink = p-rLink; p-rLink = s; p-rLink-lLink = 第 3 页 共 10 页s;D. s-lLink = p; s-rLink = p-rLink; p-rLink-lLink = s; p-rLink = s;/7,设有一个 nn 的对称
8、矩阵 A,将其 上 三角部分按行存放在一个一维数组 B 中,A00存放于 B0中,那么第 i 行的对角元素 Aii存放于 B 中( )处。A. (i+3)*i/2 B. (i+1)*i/2 C. (2n-i+1)*i/2 D. (2n-i-1)*i/2/8,给定一个字符串“ababaa”,则这个串对应 nextval 函数值分别为(D )A,012324 B,010104 C,010105 D,0112349, 为了实现图的广度优先遍历,BFS 算法一般需要使用的一个辅助数据结构是( B ) 。A. 栈 B. 队列 C. 二叉树 D. 树10, 对于如图所示的带权有向图,从顶点 1 到顶点 8
9、 的最短路径为( C ) 。A. 59 B. 51 C. 50 D. 60三,程序阅读题(每题 6 分,共 24 分)1, 数据结构 link 的定义如下,函数 visit 用于打印参数所指向的结点数据,请指出函数 unknown 的作用是什么,其中的参数 h 代表如下图所示的一个单链表,写出输出结果。 AREhtypedef struct LinkNodeint data;struct LinkNode *next;*link;void unknown(link h, void (*visit)(link) if (h = NULL) return;unknown(h-next, visit
10、);(*visit)(h);第 4 页 共 10 页作用:逆序输出链表中的结点结果:E R A2, 此算法用到了一个整数堆栈,其中 InitStack,Push,Pop,StackEmpty 分别代表堆栈初始化、进栈、出栈和判断堆栈是否为空,请说出此算法的作用,当输入的 n 和 r 的值分别为 15 和 5 时,写出输出结果。void unknown()Stack s;int e;int n,r;InitStack(s);coutrn;if(r9|r0) top-; out=stacktop; printf( “%d,”,out); num1+;p=adjlistout.link;while
11、( p!=NULL) k=p-degree;adjlistk. degree - -; /顶点入度减 1, if(adjlistk.degree=0)/若入度减为 0,则进栈 stacktop=k;top+; p=p-link; if (num1lchild);r=TreeDepth(root-rchild);第 8 页 共 10 页if (lr)return l+1 ;elsereturn r+1 ;2,函数 DeleteNode(Bitree* r,inte)的功能是:在树根结点指针为 r 的二叉查找(排序)树上删除键值为 e 的结点,若删除成功,则函数返回 0,否则函数返回-1。二叉查找
12、树结点的类型定义为:(注:如果填 C 语句有困难,可以填相应的功能说明,可以得此题的 60%)typedef struct Tnodeint data: /*结点的键值*/struct Tnode *Lchild,*Rchild; /*指向左、右子树的指针*/*Bitree;在二叉查找树上删除一个结点时,要考虑三种情况:若待删除的结点 p 是叶子结点,则直接删除该结点;若待删除的结点 p 只有一个子结点,则将这个子结点与待删除结点的父结点直接连接,然后删除结点;若待删除的结点 p 有两个子结点,则在其左子树上,用中序遍历寻找关键值最大的结点 s,用结点 s 的值代替结点 p 的值,然后删除结点
13、 s,结点 s 必属于上述、情况之一。int DeleteNode(Bitree *r,int e) Bitree p*r, pp, s, c;while( p-data!=e ) /*从树根结点出发查找键值为 e 的结点*/pp=p;if (e data) p = p-Lchild;else p = p-Rchild;if(!p) return -1; /*查找失败*/if (p-Lchild & p-Rchild) /*处理情况*/s = p-Lchild ;pp = p;while( s-Rchild ) pp = s;s = s-Rchild;p-data = s-data; p =
14、s;第 9 页 共 10 页/* 处理情况、* /if( !p-Rchild ) c = p-Lchild;else c=p-Rchild;if (p = *r) *r = c;else if ( pp-Lchild=p ) pp-Lchild = c;else pp-Rchildc;free(p);return 0;五, 解答题(每题 10 分,共 20 分)1, 图所示的 AOE 网络(1) 这个工程最早可能在什么时间结束。 (2) 求每个事件的最早开始时间 Vei和最迟开始时间 Vli。 (3) 求每个活动的最早开始时间 e( )和最迟开始时间 l( )。(4) 确定哪些活动是关键活动。
15、画出由所有关键活动构成的图,指出哪些活动加速可使整个工程提前完成。(1) 工程最早在 43 天结束(2)每个事件的最早开始时间 Vei和最迟开始时间 VliV 1 2 3 4 5 6Ve 0 19 15 29 38 43Vl 0 19 15 37 38 43(3) 求每个活动的最早开始时间 e( )和最迟开始时间 l( )。E 12 13 24 32 25 35 46 56Ee 0 0 19 15 19 15 29 38El 17 0 29 15 19 27 39 382, 给定一个关键码序列(19, 14, 23, 01, 68, 20, 84,27, 55, 11),请问这个序列分别采用顺序查找、二分查找、二叉排序树、平衡二叉树及哈希方式进行查找,在等概率的情况下,这些方法搜索成功时的平均查找长度(要求写出这些查第 10 页 共 10 页找表的构造过程,对于二分查找画出判定树,其它几类可以直接写出最后构造出的二叉排序树,平衡二叉树,哈希表,顺序表)备注:(采用哈希表时,哈希表的长度取 m = 13;哈希函数为 H (K) = K % m,采用线性探查法解决冲突) 参考答案:顺序查找的平均查找长度为:5.5二分查找的平均查找长度:2.9二叉排序树的平均查找长度:3.1哈希表的平均查找长度为:1.8