河南工业大学14级数据结构(软件工程)试卷A(新) 2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学院名称: 专业班级: 姓 名: 学 号:
┃┃┃┃┃┃┃┃┃┃┃┃ 密
┃┃┃┃┃┃┃┃┃┃┃┃┃┃┃ 封
┃┃┃┃┃┃┃┃┃┃┃┃┃┃┃ 线
┃┃┃┃┃┃┃┃┃┃┃┃┃┃
请 不
要 在 密
封
线 内
答
题
数据结构 期中考试试卷
一、单项选择题(共7 题,每小题 2 分,共 14分,答案请填在答题表中)
1. 下列关于线性表的顺序和链式存储结构的结点地址说法正确的是( )。
A. 前者一定连续,后者一定不连续
B. 两者可连续可不连续
C. 前者一定连续,后者不一定连续
D. 前者不一定连续,后者一定连续
2. 在一个单链表中,若q 结点是p 结点的前驱结点,若在它们之间插入结点s ,则执行( )。
A . s→next = p→next ; p→next = s;
B .p →next = s; s →next = q;
C .p →next = s →next; s →next = p;
D .q→next = s; s→next = p;
3. 一个队列的进队列顺序是1, 2, 3, 4,则出队列顺序为( )。
A. 4, 3, 2, 1
B. 2, 4, 3, 1
C. 1, 2, 3, 4
D. 3, 2, 1, 4
4. 在循环队列中用数组A[0..m-1] 存放队列元素,其队头和队尾指针分别为front 和rear ,则当
前队列中的元素个数是( )。
A. (front - rear + 1) % m
B. (rear - front + 1) % m
C. (front - rear + m) % m
D. (rear - front + m) % m
5. 一棵具有35个结点的完全二叉树的高度为( )。假定空树的高度为-1。
A. 5
B. 6
C. 7
D. 8
6. 一个栈的入栈顺序是1、2、3、4、5,则此栈不可能的输出顺序为( )。
A. 5、4、3、2、1
B. 4、5、3、2、1
C. 4、3、5、1、2
D. 1、2、3、4、5
7. 在长为n 的顺序表中,删除第i 个元素(1≤i≤n+1)需要向前移动( )个元素。
A. n-i
B. n-i+1
C. n-i-1
D. I
二、填空题(共5 题,每小题 2分,共 10 分)
1. 所有插入在表的一端进行,而所有删除在表的另一端进行的线性表称为 。
2. 将一棵有100个结点的完全二叉树按层编号,其中根结点的编号是1,其余编号一次增1,
则编号为49的结点X ,其双亲的编号为 。
3. 假设一个9阶的上三角矩阵A 按列优先顺序压缩存储在一维数组中,其中B [0]存储矩阵中
第1个元素a 11 ,则B[31] 中存放的元素是 。
4. 有n 个结点的二叉链表中,其中空的指针域为n+1,指向孩子的指针个数为 。
5. 已知一棵完全二叉树中共有768个结点为,则该树中共有 个叶子结点。
三、综合题(共 5 题,每小题 10分,共 50 分) 1. 对于给定的5个权值
W={9,5,13,3,6},请构造其对应的一颗Huffman 树;并求出
该树的带权路径长度以及各结点的Huffman 编码。(备注:要求写出Huffman 树的具体构造过程。)
2. 已知一颗二叉树的先序遍历序列和中序遍历序列分别为ABEFIJDGH 和EBIFJAGDH.要求如下: ⑴画出该二叉树并写出详细的分析过程;⑵写出该二叉树的后续遍历序列。
学院名称 专业班级 姓 名 学 号
┃┃┃┃┃┃┃┃┃┃┃┃ 密
┃┃┃┃┃┃┃┃┃┃┃┃┃┃┃ 封
┃┃┃┃┃┃┃┃┃┃┃┃┃┃┃ 线
┃┃┃┃┃┃┃┃┃┃┃┃┃┃
请 不
要 在 密
封
线 内
答
题
3. 已知一组关键字(19,14,23,1,68,20,24),哈希函数为:H(key)=key MOD 13,哈希表长m=16,
假设每条记录查找概率相等,用线性探测再散列处理冲突法,计算出每个关键字的哈希地址,构造出哈希表并给出平均查找长度。
4. 使用普里姆算法构造出下图的最小生成树,要求写出构造过程。
5. 求下图的关键路径?
开始 顶点 完成 顶
点
学院名称 专业班级 姓 名 学 号
┃┃┃┃┃┃┃┃┃┃┃┃ 密
┃┃┃┃┃┃┃┃┃┃┃┃┃┃┃ 封
┃┃┃┃┃┃┃┃┃┃┃┃┃┃┃ 线
┃┃┃┃┃┃┃┃┃┃┃┃┃┃
请 不
要 在 密
封
线 内
答
题
四、算法设计题(共2 题,每小题 10分,共 20 分)
1.已知一线性表L=(A1,A2,......,An-1,An-2),采用单链表作为存储结构,要求:编写一个带头结点的单链表的逆置算法,实现将单链表中的元素首尾置换,即原表中的第一个结点逆置后变成最后一个结点,原表中第二个结点变成倒数第二个结点,以此类推。单链表结点定义如下: typedef struct Lnode {ElemType data; struct Lnode *next; }Lnode,*LinkList;
2.若二叉树采用二叉链表作为存储结构,结点定义如下: typedef struct BTnode {ElemType data;
struct BTnode *Lchild,Rchild; }BTnode,*BinTree;
要求写出求二叉树叶子结点个数的算法。