教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 范文大全 > 行业范文 >

数据结构试题(全部答案)

来源:网络收集 时间:2026-01-25
导读: 好的试题是你考试好的跳板 《数据结构》试题答案(闭卷) A卷 (电信系本科2008级 2010年1月) 姓名 班级 一、简答题 (每题4分,共40分) 1.已知一个线性表有n(n=30)个元素,其中每个元素的数据占8个字节。假设一个指针的大小为4个字节。如果采用有30个元

好的试题是你考试好的跳板

《数据结构》试题答案(闭卷) A卷

(电信系本科2008级 2010年1月)

姓名 班级

一、简答题 (每题4分,共40分)

1.已知一个线性表有n(n<=30)个元素,其中每个元素的数据占8个字节。假设一个指针的大小为4个字节。如果采用有30个元素的定长数组存储,那么当数组中有效元素个数n满足什么条件时,数组的存储效率比不带头结点的单链表更高?

答:8*30<(8+4)*n n>20

2.给定12个字母,假设他们的权值都相等。采用Huffman编码,则每个字母的平均编码长度是多少?

答:按Huffman树建立规则,应有4个3Bit码和8个4Bit码,则平均码长为(4*3+8*4)/12=3.67

3.利用栈计算表达式((A-B)-C)-(D+(E-F)) 的值,操作数栈和运算符栈的深度最小各是多少?

答:5项 4项

4. 在一棵有n个结点的树中,只存在度为m和度为0的结点,给出叶子结点的数目。

设: n=nm+n0 , 关系个数n-1=m* nm 解此方程组n0=n-(n-1)/m

5. 找出满足在中序遍历和后序遍历时,所得到的结点访问序列相同的二叉树。 答:该二叉树为只有一个结点的二叉树或右单支树

1

好的试题是你考试好的跳板

6.欲将无序序列(23, 78, 12, 35, 69, 95, 11, 09, 35*, 48, 99, 26)中的关键字由大到小重新排列,请写出快速排序第一趟排序的结果序列。 原始序列

7.设模式串为“大学生中华华中科技大学大学生活”,求该模式串的next函数,next函数值与模式串向右滑动距离的关系是什么? next =0 1 1 1 1 1 1 1 1 1 2 3 2 3 4

8.设有 1000 个结点(有序),用二分法查找时,最大比较次数是多少?

答:1000个有序节点采用二分查找时的查找判定树深度为10,故最大比较次数为10

9.设有150个记录要存储到散列表中,并利用线性探查法解决冲突,要求找到所需记录的平均比较次数ASL不超过2次。试问散列表需要设计多大? (ASL = ( 1+1/ (1- ) )/2;装载因子 =已装入散列表的记录数/散列表的长度 )。 答:已知要存储的记录数为n=150,查找成功的平均查找长度为ASLsucc ≤2,则有:ASLsucc =1/2(1+1/(1- ))≤2 解得 ≤2/3 ,又有: =n/m=150/m 两式联立得:150/m≤2/3,解得:m≥225. 所以散列表需要设计225个单元。

10. 若从二叉树的任一结点出发到根的路径上所经过的结点序列按其关键字有序,则该二叉树是( )?

A、二叉排序树 B、哈夫曼树 C、堆 D、静态最优查找树 答:C(堆)

二、综合题(共30分)

1.说明下面算法的功能是什么? (6分)

2

好的试题是你考试好的跳板

int unknown(BiTree *r){

{//指针r是二叉树的根指针

if(r==NULL) return 0;

else if(unknown(r->leftChild)>=unknown(r->rightChild))

return 1+unknown(r->leftChild);

else return 1+unknown(r->rightChild); }

答案:求二叉树的深度

2.写出递归过程调用p(3)的运行结果,并分析该递归过程的时间复杂度。 (8分) void p(int w) {

if w>0 { p(w-1);

print(w); //输出W p(w-1);

} }

答案: 依据栈的变化,可以得出输出结果为:1 2 1 3 1 2 1

时间复杂度为o(2w)

3.若一序列(33,44,24,53,68,43,76,85,45,109,03,17)的查找概率分别是(0.01,0.15,0.03,0.05,0.18,0.04,0.15,0.05,0.05,0.21,0.04,0.04),画出最优查找的哈希表(哈希函数为:Hash(key)=key mod 11,采用链地址法进行冲突处理),并求平均查找长度ASL (8分)

答: 最优查找的哈希表如下图所示:

3

好的试题是你考试好的跳板

ASL=1*(0.15+0.05+0.18+0.04+0.04+0.05+0.21)+2*(0.01+0.03+0.15)+3*0.04 =0.72+0.38+0.12 =1.22

4.下图给出了一图的邻接矩阵,回答以下问题: (8分)

A B C D E F A

0 0 1 1 0 0 B 0 0 0 0 1 1 C 1 0 0 1 0 0

D 1 0 1 0 0 0 E 0 1 0 0 0 1 F 0 1 0 0 1 0

1) 画出该图的逻辑图;

2) 从顶点B开始,分别写出深度优先和广度优先搜索的任一遍历序列; 3) 该图是否存在最小生成树?说明理由。

答: 1

2. 深度优先序列 BEFDAC, 广度优先序列BFEDAC

3. 此图是非连通图,没有最小生成树,

4

好的试题是你考试好的跳板

三、 算法设计题(任选3题,每题10分,共30分)

1.一个长度为n的学生记录数组,编写一个最优算法实现数组中男生排在前,女生

排在后,并分析该算法的平均时间和空间复杂度,先给出学生记录的c语言描述。(10分)

(1) 学生记录的c语言描述如下: typedef struct student { int data; char sex } student;

struct student a[n];

(2)算法设计(仿一趟快排算法,但无需将首元素备份,交换则可)

int sort(int &a, int low, int high) { while(low<high) {

while((low<high)&&a[low].sex==’male’) low++; while((low<high)&&!a[high] .sex==’male’)high--; if(low<high) {

temp=a[low]; //前面是女生后面是男生的话,则需要交换位置 a[low]=a[high]; a[high] = temp ; low++; high-- } }

return low; } //sort

该算法的平均时间复杂度为O(n),因为只需利用一趟快排便可将男生和女生分开; 平均空间复杂度为O(1),因为只用到一个temp缓冲单元,与n无关。

2.已知线性单链表头指针为list,请写一算法,要求不求出链表的长度且空间复杂度为o(1) ,找出链表的倒数第k个结点。若找到这样的结点,算法返回该结点的地址,否则,返回NULL。(10分)

答案:

算法的基本思想:

5

好的试题是你考试好的跳板

设置一个指针变量p(初始时指向链表的第1 个结点),然后让其后移指向链表的 第k个结点(不是倒数第k个结点);再设置另外一个指针变量 r,初始时也指向链表的第1 个结点;利用一个循环让p 与r 同步沿链表向后移动;当p 指向链表最后那个结点时,r 指 向链表的倒数第k个结点。

显然,算法的时间开销主要指针的移动上,对于

任意k(1≤k≤n),指针分别要移动k-1 次和n-k次,两个部分总计执行n-1 次, 因此,算法的总扫描次数为n次。 (2)算法:

LinkList SEARCHNODE(LinkList list,int k) {

LinkList p,r; int i; if(list!=NULL&& k>0){

p=list;

for(i=1;i<k;i++){ /* 循环结束时,p指向链表的第k个结点*/

p=p->link; if(p==NULL){

printf("链表中不存在倒数第k个结点!");return NULL; }

} //for r=list;

while(p->link!=NULL){

p=p->link; r=r->link;

} /* 循环结束时,p指向链表最后那个结点,r指向倒数 …… 此处隐藏:2893字,全部文档内容请下载后查看。喜欢就下载吧 ……

数据结构试题(全部答案).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/fanwen/981003.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)