数据结构应用题

合集下载

(完整)东南大学十套数据结构试题及答案,推荐文档

(完整)东南大学十套数据结构试题及答案,推荐文档

数据结构试卷(一)三、计算题(每题 6分,共24 分) 3.已知一个图的顶点集 V 和边集E 分别为:V={1,2,3,4,5,6,7};E={(1,2)3,(1,3)5,(1,4)8,(2,5)10,(2,3)6,(3,4)15, (3,5)12,(3,6)9,(4,6)4,(4,7)20,(5,6)18,(6,7)25}; 用克鲁斯卡尔算法得到最小生成树,试写出在最小生成树中依次得到的各条边。

4.画出向小根堆中加入数据4, 2, 5, 8, 3时,每加入一个数据后堆的变化。

四、 阅读算法(每题 7分,共14分)1. LinkList mynote(LinkList L){//L 是不带头结点的单链表的头指针if(L&&L-> next){q=L ; L=L — >next ; p=L ;S1: while(p — >n ext) p=p — >next ; S2: p — >next=q ; q — >next=NULL ;}return L ;}请回答下列问题: (1 )说明语句S1的功能; (2) 说明语句组S2的功能;(3) 设链表表示的线性表为(a 1,a 2,…,a n ),写出算法执行后的返回值所表示的线性 表。

2. void ABC(BTNode * BT){if BT {ABC (BT->left); ABC (BT->right); cout<<BT->data<<''; } }该算法的功能是:五、 算法填空(共 8分) 二叉搜索树的查找 一谗归算法:bool Fi nd(BTreeNode* BST,ElemType & item){if (BST==NULL) return false; // 查找失败 else { if (item==BST->data){ item=BST->data;// 查找成功 return_______________________ ;}else if(item<BST->data) return Find( ,item);1.在如下数组A 中链接存储了一个线性表,A [0].next ,试写出该线性表。

数据结构试题及答案

数据结构试题及答案

数据结构试题及答案⼀、选择题(共10题,每题1分,共10分)1.下⾯关于线性表的叙述中,错误的是哪⼀个?()A.线性表采⽤顺序存储,必须占⽤⼀⽚连续的存储单元B.线性表采⽤顺序存储,便于进⾏插⼊和删除操作C.线性表采⽤链接存储,不必占⽤⼀⽚连续的存储单元D.线性表采⽤链接存储,便于插⼊和删除操作2.在⼀个单链表中,已知q所指结点是p所指结点的前驱,若在p和q之间插⼊s所指结点,则执⾏的操作是()。

A. s->next=p->next;p->next=s;B. q->next=s;s->next=p;C. p->next=s->next;s->next=p;D. p->next=s;s->next=q;3.设有三个元素X,Y,Z顺序进栈,下列得不到的出栈排列是( )。

A.XYZ B. YZX C. ZXY D. ZYX4.若⽤⼀个长度为6的数组来实现循环队列,且当前rear和front的值分别为0和3,则从队列中删除⼀个元素,再增加两个元素后,rear和front的值分别是( )。

A.1和5 B.2和4 C.4和2 D. 5和15.下列说法中正确的是()。

A.⼆叉树就是度为2的树 B.⼆叉树中不存在度⼤于2的结点C.⼆叉树中⾄少有⼀个结点的度为2 D.⼆叉树中任何⼀个结点的度都为2 6.在具有n个结点的⼆叉链表中,共有()个空指针。

A. nB. n-1C. n+1D. 不确定7.根据⼆叉树与树的转换关系可知,深度为h的满⼆叉树对应的森林由()棵树构成。

A.1 B.log2n C. h/2 D. h8.在⼀个⽆向图中,所有顶点的度数之和等于所有边数的()倍。

A.1/2 B.1 C. 2 D. 49.对17个元素的查找表做折半查找,则查找长度为5的元素下标依次是()。

A.8,17 B.5,10,12 C.9,16 D.9,1710.关于排序,下列说法中正确的是()。

数据结构应用题

数据结构应用题

北京语言大学网络教育学院《数据结构》【应用题】(1、已知序列(12,4,17,10,7,30),用直接选择排序法对其进行递增排序,写出每一趟的排序结果。

答:第1趟:4 12 17 10 7 30第2趟:4 7 17 10 12 30第3趟:4 7 10 17 12 30第4趟:4 7 10 12 17 30第5趟:4 7 10 12 17 302、单链表结点的类型定义如下:typedef struct LNode {int data;struct LNode *next;} LNode, *Linklist;写一算法,将带头结点的有序单链表A和B合并成一新的有序表C。

(注:不破坏A和B的原有结构)答:Merge(Linklist A, Linklist B, Linklist &C )void Merge(Linklist A, Linklist B, Linklist &C){ C=(Linklist)malloc(sizeof(LNode));pa=A->next; pb=B->next; pc=C;while(pa&&pb){ pc->next=(Linklist)malloc(sizeof(LNode));pc=pc->next;if(pa->data<=pb->data){ pc->data=pa->data; pa=pa->next;}else{ pc->data=pb->data; pb=pb->next;}}if(!pa) pa=pb;while(pa){ pc->next=(Linklist)malloc(sizeof(LNode));pc=pc->next;pc->data=pa->data; pa=pa->next;}pc->next=NULL;}3、已知一棵非空二叉树,其按中序和后序遍历的结果分别为:中序:CGBAHEDJFI 后序:GBCHEJIFDA请画出这棵二叉树,并写出其前序遍历的结果。

数据结构试卷一及答案

数据结构试卷一及答案

数据结构试卷一一、选择题20分1.组成数据的基本单位是 ;A 数据项B 数据类型C 数据元素D 数据变量2.设数据结构A=D,R,其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},则数据结构A 是 ;A 线性结构B 树型结构C 图型结构D 集合3.数组的逻辑结构不同于下列的逻辑结构;A 线性表B 栈C 队列D 树4.二叉树中第ii≥1层上的结点数最多有个;A 2iB 2iC 2i-1D 2i-15.设指针变量p指向单链表结点A,则删除结点A的后继结点B需要的操作为 ;A p->next=p->next->nextB p=p->nextC p=p->next->nextD p->next=p6.设栈S和队列Q的初始状态为空,元素E1、E2、E3、E4、E5和E6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出列的顺序为E2、E4、E3、E6、E5和E1,则栈S的容量至少应该是 ;A 6B 4C 3D 27.将10阶对称矩阵压缩存储到一维数组A中,则数组A的长度最少为 ;A 100B 40C 55D 808.设结点A有3个兄弟结点且结点B为结点A的双亲结点,则结点B的度数数为 ;A 3B 4C 5D 19.根据二叉树的定义可知二叉树共有种不同的形态;A 4B 5C 6D 710.设有以下四种排序方法,则的空间复杂度最大;A 冒泡排序B 快速排序C 堆排序D 希尔排序二、填空题30分1.设顺序循环队列Q0:m-1的队头指针和队尾指针分别为F和R,其中队头指针F指向当前队头元素的前一个位置,队尾指针R指向当前队尾元素所在的位置,则出队列的语句为F =____________;;2.设线性表中有n个数据元素,则在顺序存储结构上实现顺序查找的平均时间复杂度为___________,在链式存储结构上实现顺序查找的平均时间复杂度为___________;3.设一棵二叉树中有n个结点,则当用二叉链表作为其存储结构时,该二叉链表中共有________个指针域,__________个空指针域;4.设指针变量p指向单链表中结点A,指针变量s指向被插入的结点B,则在结点A的后面插入结点B的操作序列为______________________________________;5.设无向图G中有n个顶点和e条边,则其对应的邻接表中有_________个表头结点和_________个表结点;6.设无向图G中有n个顶点e条边,所有顶点的度数之和为m,则e和m有______关系;7.设一棵二叉树的前序遍历序列和中序遍历序列均为ABC,则该二叉树的后序遍历序列为__________;8.设一棵完全二叉树中有21个结点,如果按照从上到下、从左到右的顺序从1开始顺序编号,则编号为8的双亲结点的编号是___________,编号为8的左孩子结点的编号是_____________;9.下列程序段的功能实现子串t在主串s中位置的算法,要求在下划线处填上正确语句;int indexchar s , char t{i=j=0;whilei<strlens && j<strlent ifsi==tj{i=i+l; j=j+l;}else{i=_______; j=______;}if j==strlentreturni-strlent;else return -1;}10.设一个连通图G中有n个顶点e条边,则其最小生成树上有________条边;三、应用题30分1.设完全二叉树的顺序存储结构中存储数据ABCDE,要求给出该二叉树的链式存储结构并给出该二叉树的前序、中序和后序遍历序列;2.设给定一个权值集合W=3,5,7,9,11,要求根据给定的权值集合构造一棵哈夫曼树并计算哈夫曼树的带权路径长度WPL;3.设一组初始记录关键字序列为19,21,16,5,18,23,要求给出以19为基准的一趟快速排序结果以及第2趟直接选择排序后的结果;4.设一组初始记录关键字集合为25,10,8,27,32,68,散列表的长度为8,散列函数Hk=k mod 7,要求分别用线性探测和链地址法作为解决冲突的方法设计哈希表;5.设无向图G所右图所示,要求给出该图的深度优先和广度优先遍历的序列并给出该图的最小生成树;四、算法设计题20分1.设计判断单链表中结点是否关于中心对称算法;2.设计在链式存储结构上建立一棵二叉树的算法;3.设计判断一棵二叉树是否是二叉排序树的算法;数据结构试卷一参考答案一、选择题二、填空题1. F+1 % m2. On,On3. 2n,n+14. s->next=p->next; s->next=s5. n, 2e6. m=2e7. CBA8. 4,169. i-j+1,010. n-1三、应用题1. 链式存储结构略,前序ABDEC,中序DBEAC,后序DEBCA;2. 哈夫曼树略,WPL=783. 18,5,16,19,21,23,5,16,21,19,18,234. 线性探测:6827322510876543210ΛΛ 链地址法:276832251086543210>->->->->->-h h h h h h h 5. 深度:125364,广度:123456,最小生成树T 的边集为E={1,4,1,3,3,5,5,6,5,6}四、算法设计题1. 设计判断单链表中结点是否关于中心对称算法;typedef struct {int s100; int top;} sqstack;int lklistsymmetrylklist head{sqstack stack; = -1; lklist p;forp=head;p=0;p=p->next {++; =p->data;}forp=head;p=0;p=p->next if p->data== =; else return0;return1;}2. 设计在链式存储结构上建立一棵二叉树的算法;typedef char datatype;typedef struct node {datatype data; struct node lchild,rchild;} bitree;void createbitreebitree &bt{char ch; scanf"%c",&ch;ifch=='' {bt=0; return;}bt=bitreemallocsizeofbitree; bt->data=ch;createbitreebt->lchild; createbitreebt->rchild;}3.设计判断一棵二叉树是否是二叉排序树的算法;int minnum=-32768,flag=1;typedef struct node{int key; struct node lchild,rchild;}bitree;void inorderbitree bt{if bt=0{inorderbt->lchild; ifminnum>bt->keyflag=0; minnum=bt->key; inorderbt->rchild;} }。

《数据结构》应用题参考习题

《数据结构》应用题参考习题

《数据结构》应用题参考习题数据结构是计算机科学中的一门基础课程,它主要研究数据的组织、存储和管理方式,以及不同数据结构对算法执行效率的影响。

在实际应用中,数据结构起到了至关重要的作用。

本文将介绍一些《数据结构》的应用题,并给出相应的参考习题。

一、栈的应用题1. 符号匹配问题问题描述:给定一个字符串,在其中包含了一些圆括号"()"、方括号"[]"和花括号"{}",判断字符中的括号是否匹配。

例题:判断字符串"{[()]()}"是否匹配。

解题思路:利用栈的先进后出特点,遍历字符串中的每个字符。

如果是左括号,则入栈;如果是右括号,则判断栈顶元素是否与之匹配。

参考习题:编写一个程序,实现括号匹配的功能,并输出匹配结果。

二、队列的应用题1. 循环队列的应用问题描述:设计一个循环队列,实现入队、出队等基本操作。

解题思路:利用数组实现循环队列,需要设置一个队头指针front和一个队尾指针rear。

入队操作时,将元素添加到rear位置;出队操作时,返回front位置元素,并将front后移。

参考习题:实现一个循环队列,并进行相关操作的测试。

三、链表的应用题1. 单链表反转问题描述:给定一个单链表,将其反转。

例题:将链表1->2->3->4->5反转为5->4->3->2->1。

解题思路:利用三个指针prev、cur和next,依次遍历链表,并修改指针指向实现链表的反转。

参考习题:编写一个程序,实现单链表反转,并输出反转后的链表。

四、树的应用题1. 二叉树的遍历问题描述:给定一个二叉树,实现它的前序遍历、中序遍历和后序遍历。

解题思路:分别使用递归和迭代的方式实现二叉树的前序遍历、中序遍历和后序遍历。

参考习题:编写一个程序,实现二叉树的前序遍历、中序遍历和后序遍历,并输出遍历结果。

五、图的应用题1. 图的最短路径问题描述:给定一个有向图,求两个顶点之间的最短路径。

2024王导数据结构综合应用题

2024王导数据结构综合应用题

2024王导数据结构综合应用题假设2024年,王导是一位深受学生喜爱的计算机科学导师。

他设计了一道综合应用题,旨在考察学生对数据结构的应用能力。

以下是题目内容和解答。

题目:在2024年的某个国家,有许多城市需要进行道路规划。

每个城市可以通过道路连接到其他城市,形成一个网络。

现有一份城市之间的道路连接关系表,其中包含了城市之间可以直接通行的道路及其长度。

请设计一个算法,找到所有城市之间的最短路径及其长度。

解答:为了解决这个问题,我们可以使用图的最短路径算法。

以下是一种常用的算法——Dijkstra算法。

1. 创建一个集合S,用于存放已经找到最短路径的城市,初始时为空。

2. 创建一个数组dist,用于存放每个城市到起点的最短路径长度,初始时所有元素为无穷大。

3. 选取一个起点,设置dist[起点]为0,并将起点加入集合S。

4. 对于起点相邻的每个城市,更新其到起点的最短路径长度,并将其加入集合S。

5. 从剩余的城市中选取一个离起点最近的城市u,将它加入集合S。

6. 对于每个城市v,如果v不在集合S中且通过u可以找到更短的路径,则更新其最短路径长度,并将其加入集合S。

7. 重复步骤5和步骤6,直到所有城市都加入集合S。

使用Dijkstra算法可以找到起点到所有城市的最短路径及其长度。

在这里可以使用优先队列(最小堆)来存储城市和最短路径长度的对应关系,以提高算法效率。

接下来我们以一个具体的例子来说明算法的步骤。

假设有4个城市,用数字1、2、3、4代表,它们之间的道路如下:- 城市1和城市2之间有一条长度为5的道路。

- 城市1和城市3之间有一条长度为9的道路。

- 城市2和城市3之间有一条长度为2的道路。

- 城市2和城市4之间有一条长度为6的道路。

- 城市3和城市4之间有一条长度为3的道路。

现在我们以城市1为起点,按照Dijkstra算法的步骤来求解最短路径及其长度。

1. 初始化操作:- 集合S = {1},dist = [0, ∞, ∞, ∞],表示起点到各个城市的最短路径长度。

(完整word版)数据结构应用题练习

(完整word版)数据结构应用题练习

1、假设一棵二叉树的层序序列是ABCDEFGHIJ 和中序序列是DBGEHJACIF,请画出该树。

21、有一个完全二叉树按层次顺序存放在一维数组中,如下所示:请指出结点P 的父结点,左子女,右子女。

3、给出下列二叉树的先序序列。

4、已知二叉树的先序遍历序列为ABCDEFGH ,中序遍历序列为CBEDFAGH ,画出二叉树。

答案:二叉树形态AFHGDECB(2)设一棵二叉树的先序序列: A B D F C E G H ,中序序列: B F D A G E H C ①画出这棵二叉树。

②画出这棵二叉树的后序线索树。

③将这棵二叉树转换成对应的树(或森林)。

ABFD CE HG(1) (2)1、已知一棵二叉树的前序序列为:A,B,D,G,J,E,H,C,F,I,K,L中序序列:D,J,G,B,E,H, A,C,K,I,L,F。

i.写出该二叉树的后序序列;ii.画出该二叉树;iii.求该二叉树的高度(假定空树的高度为-1)和度为2、度为1、及度为0的结点个数。

该二叉树的后序序列为:J,G,D,H,E,B,K,L,I,F,C,A。

该二叉树的形式如图所示:该二叉树高度为:5。

度为2的结点的个数为:3。

度为1的结点的个数为:5。

度为0的结点个数为:4。

5、试用权集合{12,4,5,6,1,2}构造哈夫曼树,并计算哈夫曼树的带权路径长度。

答案:215611187341230WPL=12*1+(4+5+6)*3+(1+2)*4=12+45+12=696、已知权值集合为{5,7,2,3,6,9},要求给出哈夫曼树,并计算带权路径长度WPL 。

答案:(1)树形态:325510199761332(2)带权路径长度:WPL=(6+7+9)*2+5*3+(2+3)*4=44+15+20=79(3) 假设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别为0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10。

数据结构试题及答案

数据结构试题及答案

数据结构试题及答案一、选择题(每小题2分,共20分),每个题的备选答案中,只有一个是正确的,请将答案填写在试题的括号中。

1、对顺序存储的线性表,设其长度为20,在任何位置上插入或删除操作都是等概率的。

插入一个元素时平均要移动表中的()个元素。

A.10 B.9 C.11 D.122、若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。

A.单链表B.仅有头指针的单循环链表C.双链表D.仅有尾指针的单循环链表3、当利用大小为n的数组顺序存储一个栈时,假定用top==n表示栈空,则向这个栈插入一个元素时,首先应执行()语句修改top指针。

A.top++ B.top-- C.top = 0 D.top4、设入栈顺序为A,B,C,D,E,则出栈序列不可能是()。

A.EDCBA B.ABCDE C.ADEBC D.ABDEC5、已知关键字序列(46, 79, 56, 38, 40, 84),采用快速排序(以位于最左位置的关键字为基准)得到的第一次划分结果为:()A.{ 40, 38, 46, 56, 79, 84 } B.{ 38, 46, 79, 56, 40, 84 }C.{ 38, 46, 56, 79, 40, 84 } D.{ 40, 38, 46, 79, 56, 84 }6、一个有n个顶点和n条边的无向图一定是()。

A.不连通的B.连通的C.有环的D.无环的7、在一棵具有n个结点的二叉树的第i层上,最多具有()个结点。

A.2i B.2i-1 C.2i+1 D.2n8、对线性表采用折半查找法,该线性表必须()。

A.采用顺序存储结构B.采用顺序存储结构,且元素按值有序C.采用链式存储结构D.采用链式存储结构,且元素按值有序9、在一棵具有n个结点的完全二叉树中,分支结点的最大编号为()。

A.?(n-1)/2? B.?n/2? C.?n/2? D.?n/2? -110、在一个无向图中,所有顶点的度数之和等于所有边数的( ) 倍。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、应用题1. 已知关键字序列为:(74,33,52,41,13,88,66,59)哈希表长为9,哈希函数为:H (k)=k %9,解决冲突用线性补偿探测法 (取Q=5),试构造哈希表,并求出等概率下查找成功的平均查找长度。

【答案】(1)哈希表:0 1 2 3 4 5 6 7 859 74 88 13 4133 52 6621211112(2) ASL=(5*1+3*2)/8=11/82. 已知一个AOV 网如图所示。

(1)试画出它的邻接链表。

(顶点号递减出现在各邻接表中)(2)试写出按照拓扑排序算法得到的拓扑序列。

V 6V 1V 2V 4V 5V 3【答案】(1)1 v 1 06v 6 1 5 v 5 3 3V 3 2 4v 4 0 2v 2 2 ∧ 6 53 ∧5 ∧5 ∧2 ∧32 ∧(2)v 4,v 6,v 1,v 3,v 5,v 23. 已知线性表的存储结构为顺序表,阅读下列算法,并回答问题:(1)设线性表L=(21,-7,-8,19,0,-11,34,30,-10),写出执行f30(&L)后的L 状态;(2)简述算法f30的功能。

void f30 (SeqList *L) { int i,j;for (i=j=0;i<L->length; i++)if(L->data[i]>=0){if(i!=j)L->data[j]=L->data[i]; j++; } L->length=j; }【答案】(1)L=(21,19,0,34,30)(2) 删除顺序表中小于0的数。

4. 已知关键字序列{34,26,47,12,63,41,22,59},利用堆排序的方法对其排序。

(1)写出在构成初始堆后关键字的排列情况。

(2)写出在堆排序的过程中输出前4个记录时,每次调整后关键字的排列情况。

【答案】(1)初始堆:{12,26,22,34,63,41,47,59}(2)输出12后:{22,26,41,34,63,59,47} 输出22后:{26,34,41,47,63,59} 输出26后:{34,47,41,59,63} 输出34后:{41,47,63,59}5. 请用克鲁斯卡尔算法构造下图所示网络的最小生成树。

14v 1 v 4v 5v 2v 3V 6108 1822121016 1920【答案】最小生成树如下图所示:14v 1 v 4v 5v 2v 3V 68 18 12106. 给出一组关键字K={14,28,17,9,7,21,13,4,11},写出用下列方法排序时,第一趟结束时关键字的排列状态。

(1)快速排序(2)希尔排序(d 1=4) (3)归并排序 【答案】给出一组关键字K={14,28,17,9,7,21,13,4,11},写出用下列方法排序时,第一趟结束时关键字的排列状态。

(1)快速排序:{11,4,13,9,7}14{21,17,28}(2)希尔排序(d 1=4):{7,21,13,4,11,28,17,9,14}(3)归并排序:[11,28 ] [9,17 ] [7,21 ] [4,13 ] [11]7. 假设一棵二叉树的先根遍历序列为ABCDEFGHI ,中根遍历序列为ADCEBFHIG 。

(1)画出该二叉树;(2)写出后根遍历序列。

【答案】(1)二叉树:BI ADGCEFH(2)后根遍历序列: DECIHGFBA 8. 已知关键字序列为:(93,42,79,131,12,102,27),哈希表长为9,哈希函数为:H (k)=k %9,解决冲突用线性探测再散列法,试构造哈希表,并求出等概率下查找成功的平均查找长度。

【答案】(1) 哈希表:0 1 2 3 4 5 6 7 827 93 12 131 4279102(2) ASL=(5*1+1*2+1*6)/7=13/79. 设网络如图所示,试用普里姆算法按照并入最小生成树中边的次序填写下表(从顶点A 开始),并画出对应的最小生成树。

154432 22ABEC DF 1 2 3 4 5始 点 终 点权 值 【答案】 1 2 34 5 始 点 A R C C E 终 点 R C D E F 权 值 22 2 311 32 22ABEC DF10. 依次读入给定的整数序列{7,16,4,8,20,9,6,18,5},完成下列操作:1)构造一棵二叉排序树,计算在等概率情况下该二叉排序树的平均查找长度ASL;2)若变更序列中元素的排列,可构造出平均查找长度达到最小的二叉排序树。

写出满足上述要求的序列中的第一个元素。

【答案】(1)ASL=(1+2*2+3*3+3*4)/9=26/9(2)811. (1)画出对表长为13的有序顺序表进行二分查找的判定树;(2)已知关键字序列为(12,14,16,21,24,28,35,43,52,67,71,84,99),写出在该序列中二分查找37时所需进行的比较次数。

【答案】(1)如图所示.71031 5 8 122 4 6 9 11 13(2)4次12. 已知二叉树如右图所示。

(1)画出该二叉树的二叉链表;(2)分别写出该二叉树的先根、中根和后根遍历序列。

AB CGD E F【答案】(1)D ∧∧ACB ∧E∧G ∧∧F ∧∧(2)先根遍历序列:ABDCEGF中根遍历序列: DBAEGCF后根遍历序列: DBGEFCA13. 已知关键字序列为:(70,31,52,41,88,12,27,66)哈希表长为9,哈希函数为:H (k)=k %9,解决冲突用线性探测再散列法,试构造哈希表,并求等概率下查找成功的平均查找长度。

【答案】(1) 哈希表:0 1 2 3 45 6 7 888 27 12 31 41 66 70 52(2) ASL=(4*1+2*2+1*3+1*4)/8 = 15/814. 设一段文字中七个常用汉字为{的,地,得,和,个,在,是},每个字符的使用频率分别为{26,6,4,7,9,8,18}。

请画出对应的哈夫曼编码树(按照每个结点的左子树根结点的权小于等于右子树根结点的权的次序构造),并求出每个字符的哈夫曼编码。

【答案】哈夫曼树:地得111111 是的在个和33158187451992678104 6哈夫曼编码的地得和个11 1011 1010 000 100 15. 假设以数组seqn[m]存放循环队列的元素,设变量rear和quelen分别指示循环队列中队尾元素的位置和元素的个数。

(1)写出队满的条件表达式;(2)写出队空的条件表达式;(3)设m=40,rear=13,quelen=19,求队头元素的位置;(4)写出一般情况下队头元素位置的表达式。

【答案】(1)quelen==m (2)quelen==0 (3)35(4)(rear-quelen+1+m)%m16. 下列是一棵五阶B-树,依次执行以下两步操作,画出每一步执行后所得到的B-树形。

(1)插入n;(2)删除e 。

c f j ra b g h i d e k l m ps t u x 【答案】 (1)插入n:a bg h i d e s t u xjc fm rk l n p (2)删除e: a b d f s t u xjc g m r k l n p h i17. 选取哈希函数为H(K)=K % 13,用链地址法处理冲突。

试在0~12的散列地址空间中对关键字序列{87,25,310,08,27,132,68,95,187,123,70,63,47}构造哈希表,并求出等概率下查找成功的平均查找长度。

【答案】H(87)=87 % 13=9 H(25)=25 % 13=12 H(310)=310 % 13=11 H(8)= 8 % 13=8H(27)=27 % 13=1 H(132)=132 % 13=2 H(68)=68 % 13=3H(95)=95 % 13=4 H(187)=187 % 13=5 H(123)=123 % 13=6 H(70)=70 % 13=5 H(63)=63 % 13=11 H(47)=47 % 13=8∧ ∧ ∧ 01234567891011 1227 ∧ 132 ∧ 68 ∧ 95 ∧ 70 123 ∧ 8 87 ∧ 63 25 ∧187 ∧47 ∧ 310 ∧ASL=(1*10+2*3)/13=16/13 18. 已知一组数据元素为(57,24,96,73,18,45,30,40,82),要求:(1)试从空树开始画出按元素排列顺序输入而生成的一棵二叉排序树;(2)画出删除结点57后的二叉排序树。

【答案】(1) 二叉排序树:241830967357458240(2)删除结点57后的二叉排序树:24 18309673 4582 40或:24 183096 8273454019. 假设有一个如下图的8×8矩阵,矩阵元素都是整型量(次对角线以上的元素都是0)。

若将上述矩阵中次对角线及其以下的元素按行优先压缩存储在一维数组B 中,请回答下列问题: (1)B 数组的体积至少是多少?(2)若a 18存储在B[0]中,a 56存储在B[k]中,则k 值为多少? (1) (2)【答案】(1)36 (2)1320. 已知有向图的邻接表如图所示,(1) 写出从顶点A 出发,对该图进行广度优先搜索遍历的顶点序列;(2) 画出该有向图的逆邻接表。

【答案】 (1)ABDCE (2)0 A 1 B 2 C 3 D 4 E4 ∧ 0 34 ∧1 0 ∧2 ∧21. 假设以带头结点的单链表表示线性表,阅读下列算法f30,并回答问题:(1) 设线性表为( a 1,a 2, a 3, a 4, a 5, a 6, a 7 ), 写出执行算法f30后的线性表; (2) 简述算法f30的功能。

void f30(LinkList L) {//L 为带头结点单链表的头指针 LinkList p,q; P =L;while (p &&p ->next){ q = p ->next;p ->next =q ->next; p =q ->next; free(q); } }【答案】(1)(a 2,a 4,a 6)(2) 删除单链表中数据结点序号为奇数的那些结点。

22. 已知有向图的邻接表如图所示,(1) 写出从顶点A 出发,对该图进行广度优先搜索遍历的顶点序列;(2) 画出该有向图的逆邻接表。

【答案】(1)ABDCE (2)0 A 1 B 2 C 3 D 4 E4 ∧ 0 34 ∧1 0 ∧2 ∧23. 依次读入给定的整数序列{7,16,4,8,20,9,6,18,5},完成下列操作:1)构造一棵二叉排序树,计算在等概率情况下该二叉排序树的平均查找长度ASL;2)若变更序列中元素的排列,可构造出平均查找长度达到最小的二叉排序树。

相关文档
最新文档