中南大学计算机数据结构试题参考答案
中南大学2012-2013学年一学期《数据结构》考试试卷

第 1 页(共 2 页)数据结构试卷中南大学考试试卷2012 -- 2013学年 1学期时间 100 分钟 2013年 1 月 14 日数据结构课程 48 学时 3 学分 考试形式: 闭 卷专业年级:通信工程 11 级总分 100 分,占总评成绩 70 %注:此页不作答题纸,请将答案写在答题纸上一、线性结构题( 5 个小题,每个小题 8 分,共计 40 分)1. 在一个单链表中,若p 所指结点不是最后结点, s 指向已生成的新结点,则在p 之后插入s 所指结点的正确操作是如何表达?(8 分)2. 设有字符串为 3*-y ,试利用栈写出将其转换为 3y-* 的操作步骤。
假定用X 代表扫描该字符串过程中顺序取一个字符进栈的操作,用 S 代表从栈中取出一字符加入到新字符串尾的出栈操作。
例如,ABC 变为 BCA 的操作步骤 XXSXSS 。
( 8 分)3. 若 front 和 rear 分别表示循环队列 Q 的头指针和尾指针, m0表示该队列的最大容量,则循环队列为空的条件是什么?循环队列为满的条件是什么?(8 分)4. 二维数组 A[20][20] 采用按行为主序的存储方式,每个元素占4 个字节的存储单元,若A[0][0] 的存储地址为 300,则 [A][10][10] 的地址是多少?( 8 分 )5.用二分查找法对一个长度为10 的有序表 {8,12,15,17,19,23,24,26,29,33}进行查找,填写查找每一元素需要的比较次数。
( 8 分)二、非线性结构题( 5 个小题,每个小题 8 分,共计 40 分)1.现有某二叉树,按先根遍历的序列为 ABDEFCG ,H 按中根遍历的序列为 DEFBGHC ,A 试画出此二叉树。
( 8 分)2.已知无向图 G 的邻接矩阵如下,假设对其每行元素访问时必须从右到左,请写出从 V 0 开始的深度优先搜索的序列。
( 8 分)V 0 0 1 1 0 0V 1 1 0 1 1 1 V 2 1 1 0 1 1 V 3 0 1 1 0 1 V 40 v 0 v 1 1 1 v 2 v 1 3 0v 4110100230 3 50 10 60520第4 题图43.一组记录的键值为(46,74,18,53,14,20,40,38,86,65),求利用堆排序的方法建立的初始堆。
大学计算机《数据结构》试卷及答案(三)

大学计算机《数据结构》试卷及答案一、单选题(每小题2分,共8分)1、在一个长度为n的顺序线性表中顺序查找值为x的元素时,查找成功时的平均查找长度(即x与元素的平均比较次数,假定查找每个元素的概率都相等)为( )。
A nB n/2C (n+1)/2D (n-1)/22、在一个单链表中,若q所指结点是p所指结点的前驱结点,若在q与p之间插入一个s所指的结点,则执行( )。
A s→link=p→link; p→link=s;B p→link=s; s→link=q;C p→link=s→link; s→link=p;D q →link=s; s→link =p;3、栈的插入和删除操作在()进行。
A 栈顶B 栈底C 任意位置D 指定位置4、由权值分别为11,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为()A 24B 71C 48D 53二、填空题(每空1分,共32分)1、数据的逻辑结构被分为_______、_______ 、_______和_______四种。
2、一种抽象数据类型包括______________和_____________两个部分。
3、在下面的数组a中链接存储着一个线性表,表头指针为a[o].next,则该线性表为_________________________________________________。
a 0 1 2 3 4 5 6 7 8data4、在以HL为表头指针的带表头附加结点的单链表和循环单链表中,判断链表为空的条件分别为________________和____________________。
5、用具有n个元素的一维数组存储一个循环队列,则其队首指针总是指向队首元素的___________,该循环队列的最大长度为__________。
6、当堆栈采用顺序存储结构时,栈顶元素的值可用———————表示;当堆栈采用链接存储结构时,栈顶元素的值可用_______________表示。
数据结构计算题及参考答案

数据结构计算题及参考答案数据结构计算题及参考答案数据结构是计算机科学中的重要概念,它用于组织和管理数据。
在计算机科学的学习过程中,我们经常会遇到一些与数据结构相关的计算题。
这些题目旨在帮助我们加深对数据结构的理解,并提高我们的编程能力。
在本文中,我将为大家提供一些常见的数据结构计算题及其参考答案。
1. 栈的应用题栈是一种具有后进先出(Last In First Out)特性的数据结构。
下面是一个栈的应用题:题目:使用栈判断一个字符串中的括号是否匹配。
解答:我们可以遍历字符串中的每个字符,如果遇到左括号,则将其入栈;如果遇到右括号,则判断栈顶元素是否为对应的左括号,如果是,则将栈顶元素出栈,继续遍历下一个字符;如果不是,则说明括号不匹配。
最后,如果栈为空,则说明字符串中的括号全部匹配,否则不匹配。
2. 队列的应用题队列是一种具有先进先出(First In First Out)特性的数据结构。
下面是一个队列的应用题:题目:使用队列模拟击鼓传花游戏。
解答:我们可以使用队列来模拟击鼓传花游戏。
首先,将所有参与游戏的人依次加入队列。
然后,从队列中取出第一个人,并将其加入队尾。
重复这个过程,直到传花的次数达到指定的次数。
最后,队列中的最后一个人即为被淘汰的人。
3. 链表的应用题链表是一种常见的动态数据结构,它可以在运行时动态分配内存。
下面是一个链表的应用题:题目:反转链表。
解答:我们可以使用迭代或递归的方式来反转链表。
迭代的方法是从链表头开始,依次将每个节点的指针方向反转。
递归的方法是先反转链表的子链表,然后将当前节点的指针指向前一个节点。
最后,将链表的头节点指向反转后的链表的头节点。
4. 树的应用题树是一种非常重要的数据结构,它具有层次结构和分支结构。
下面是一个树的应用题:题目:计算二叉树的深度。
解答:我们可以使用递归的方式来计算二叉树的深度。
对于一个二叉树,它的深度等于左子树的深度和右子树的深度中的较大值加1。
中南大学计算机科学与技术系《计算机体系结构》课程试题库

中南大学计算机科学与技术系《计算机体系结构》课程试题库《计算机体系结构》课程试题库目录一.填空题1二.判断题56三.名词解释74四.简答题74五.计算题74说明:1.判断题中答案内容,“ V ”表示正确,“ X ”表示错误。
II 一填空题一.填空题--------------------------------------------1•试题序号:0012.题型:填空3.难度级别:24.知识点:1.1引论1. 55.分值:6.所需时间:1分钟7.试题关键字:性能增长8.试题内容:在计算机诞生的头25年屮,计算机性能增长相对缓慢。
在这个过程屮,制造技术和()同时发挥着作用。
9.答案内容:体系结构10.评分细则:1.5分/空---------------------------------------------1•试题序号:0022.题型:填空3.难度级别:24.知识点:1.1引论5.分值:1.56.所需时间:1分钟7.试题关键字:性能增长8.试题内容:在计算机诞生的头25年中,计算机性能增长相对缓慢。
在这个过程屮,()和体系结构同时发挥着作用。
9.答案内容:制造技术10.评分细则:1.5分/空---------------------------------------------1•试题序号:0032.题型:填空3.难度级别:14.知识点:1.1引论5.分值:3分6.所需时间:2分钟7.试题关键字:计算机性能增长8.试题内容:目前,计算机性能增长达到每年50%以上,其屮包括器件技术在内的()提供其中约8%,其余约42%的部分主要依靠()发展的支持。
9.答案内容:计算机制造技术计算机体系结构10.评分细则:1.5分/空---------------------------------------------1•试题序号:0042.题型:填空3.难度级别:34.知识点:1.2计算机体系结构的概念5.分值:1.5分6.所需时间:1分钟7.试题关键字:通用计算机设计8.试题内容:如何采用先进的计算机体系结构和生产技术,制造出具有()的计算机系统,是所有通用计算机设计的共同目标°9.答案内容:高性价比10.评分细则:1.5分/空--------------------------------------------1•试题序号:0052.题型:填空3.难度级别:14.知识点:1.2计算机体系结构的概念5.分值:3分6.所需时间:2分钟7.试题关键字:多级层次结构8.试题内容:从计算机语言的角度,把计算机系统按功能划分成多级层次结构,其中,第2级是(),第3级是()。
中南大学《计算机基础》在线考试题库(200题)(有答案)

中南大学《计算机基础》在线考试题库(200题)(有答案)计算机基础01一. 单选题(共40题,共100分)1. 不是Modem传输率一般标识参数的是()。
(2.5分)A.1KpbsB.14.4KpbsC.56KpbsD.9600pbs★标准答案:A2. “P4-1.7GHz/128MB/60G/40X/15"/多媒体”是某微机广告,从中可以看出此微机的内存为()。
(2.5分)A.128MBB.1.7GHzC.60GBD.40X★标准答案:A3. 微型计算机的性能主要由()决定。
(2.5分)A.CPUB.主板C.价格D.控制器★标准答案:A4. 微型计算机的总线结构是指()。
(2.5分)A.AB、DB、CB总线B.内部总线C.数据总线D.I/O总线★标准答案:A5. 下列说法中错误的是()。
(2.5分)A.指令系统有一个统一的标准,所有的计算机指令系统相同B.简单地来说,指令就是给计算机下达的一道命令C.指令是一组二进制代码,规定由计算机执行程序的操作D.为解决某一问题而设计的一系列指令就是程序★标准答案:A6. 当前使用的微型计算机,其主要元器件是由()组成的。
(2.5分)A.大规模和超大规模集成电路B.晶体管C.集成电路D.电子管★标准答案:A7. 仓库管理软件属于()。
(2.5分)A.应用软件B.工具软件C.系统软件D.字处理软件★标准答案:A8. 底部装有一个滚动小球的机械式鼠标器,在使用时()。
(2.5分)A.不需要专门的鼠标感应装置B.需要专门的鼠标感应装置C.使用方式特殊D.需要专门的电源供电★标准答案:A9. 下列关于计算机病毒的叙述中,正确的是()。
(2.5分)A.计算机病毒可以通过读写软件、光盘或Internet网络进行传播B.计算机病毒是通过电力网进行传播的C.计算机病毒只感染.exe或.com文件D.计算机病毒是由于软件片表面不清洁而造成的★标准答案:A10. 文件型病毒的主要传播对象是()。
计算机专业基础综合数据结构(集合)历年真题试卷汇编9

计算机专业基础综合数据结构(集合)历年真题试卷汇编9(总分:70.00,做题时间:90分钟)一、单项选择题(总题数:20,分数:40.00)1.下列二叉排序树中查找效率最高的是( )。
【中南大学2003二、11(1分)】(分数:2.00)A.平衡二叉树√B.二叉查找树C.没有左子树的二叉排序树D.没有右子树的二叉排序树解析:2.构造一棵具有n个结点的二叉排序树,最理想情况下的深度为( )。
【华中科技大学2007一、14(2分)】(分数:2.00)A.n/2B.nC.[log 2 (n+1)]D.[log 2 (n+1)] √解析:3.设二叉排序中关键字由1到1000的整数构成,现要查找关键字为363的结点,下述关键字序列中,不可能是在二叉排序树上查找的序列的是( )。
【北京交通大学2005一、1(2分)】(分数:2.00)A.2,252.401,398,330,344,397,363B.924,220,911,244,898,258,363C.925,202,911,240,912,245,363 √D.2,399,387,219,266,382,381,278,363解析:4.分别以下列序列构造二叉排序树,与用其他三个序列所构造的结果不同的是( )。
【合肥工业大学2000一、4(2分)】(分数:2.00)A.(100,80,90,60,120,1 10,130)B.(100,120,110,130,80,60,90)C.(100,60,80,90,20,110,130) √D.(100,80,60,90,120,130,110)解析:5.分别以下列序列构造二叉排序树,与众不同的是( )。
【中国科学技术大学2004】(分数:2.00)A.100,80,60,85,110,120,150 √B.100,80,60,85,120,110,150C.100,80,85,60,120,110,150D.100,80,60,85,120,150,110解析:6.在平衡二叉树中插入一个结点后造成了不平衡,设最低的不平衡结点为A,并已知A的左孩子的平衡因子为0,右孩子的平衡因子为1,则应作( ) 型调整以使其平衡。
计算机专业基础综合数据结构(线性表)历年真题试卷汇编4

计算机专业基础综合数据结构(线性表)历年真题试卷汇编4(总分:66.00,做题时间:90分钟)一、单项选择题(总题数:15,分数:30.00)1.静态链表中指针表示的是( )。
【中南大学2003二、2(1分)】(分数:2.00)A.下一元素的地址B.内存储器的地址C.下一元素在数组中的位置√D.左链或右链指向的元素的地址解析:2.链表不具有的特点是( )。
【电子科技大学2012一、3(2分)】【福州大学1998一、8(2分)】【南京理工大学2005一、13(1分)】(分数:2.00)A.插入、删除不需要移动元素B.可随机访问任一元素√C.不必事先估计存储空间D.所需空间与线性长度成正比解析:3.在n个结点的线性表的数组实现中,算法的时间复杂性是O(1)的操作是( )。
【哈尔滨工业大学2003二、1(1分)】(分数:2.00)A.访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n)√B.在第i个结点后插入一个新结点(1≤i≤n)C.删除第i个结点(1≤f≤n)D.以上都不对解析:4.(1)静态链表既有顺序存储的优点,又有动态链表的优点。
所以,它存取表中第f个元素的时间与i无关。
(2)静态链表中能容纳的元素个数的最大数在表定义时就确定了,以后不能增加。
(3)静态链表与动态链表在元素的插入、删除上类似,不需做元素的移动。
以上错误的是( )。
【南京理工大学2000一、3(1.5分)】(分数:2.00)A.(1),(2)B.(1) √C.(1),(2),(3)D.(2)解析:5.静态链表与动态链表相比,其缺点是( )。
【北京理工大学2006九、5(1分)】(分数:2.00)A.插入、删除时需移动较多数据B.有可能浪费较多存储空间√C.不能随机存取D.以上都不是解析:解析:静态链表首先要定义一个一维数组空间,每个数组元素有两个分量,一是数据元素的值,二是指针。
指针指向下一个元素在数组中的位置(下标),插入和删除时只需修改指针,不移动数据。
中南大学数据库考试题库

基础知识(单选)1.在数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的( )阶段。
A 需求分析B 概念设计C 逻辑设计D 物理设计参考答案B数据库设计步骤:(1)规划(必要性、可行性,总目标)(2)需求分析(分析用户活动,产生业务流程图;确定系统范围,产生系统范围图;分析用户活动涉及的数据,产生数据流程图;分析系统数据,产生数据字典。
)(3)概念设计(设计出独立于计算机硬件和DBMS的概念模式。
E-R模型是主要设计工具)(4)逻辑结构设计(把概念设计阶段设计好的全局E-R模式转换成与选用的具体机器上的DBMS所支持的数据模型相符合的逻辑结构,包括数据库模式和外模式)(5)数据库的物理设计(对于给定的数据模型选取一个最适合应用环境的物理结构的过程。
数据库的物理结构主要指数据库的存储记录格式、存储记录安排和存取方法)(6)数据库的实现(建立实际数据库结构;装入试验数据对应用程序进行调试;装入实际数据,进入试运行状态)(7)数据库的运行与维护(维护数据库的安全性与完整性;监测并改善数据库运行性能;根据用户要求对数据库现有功能进行扩充;及时改正运行中发现的系统错误)2. 关于数据库概念设计阶段的工作目标,下列说法错误的是A 定义和描述应用系统涉及的信息结构和范围B 定义和描述应用系统中数据的属性特征和数据之间的联系C 描述应用系统的数据需求D 描述需要存储的记录及其数量参考答案D3. SQL Server 2000的字符型系统数据类型主要包括( )。
A int、money、charB char、varchar、textC datetime、binary、intD char、varchar、int参考答案B4. 具有联系的相关数据按一定的方式组织排列,并构成一定的结构,这种结构即( )。
A 数据模型B 数据库C 关系模型D 数据库管理系统参考答案A5. 在数据库系统中,下列哪个映像关系用于提供数据与应用程序间的逻辑独立性?A 外模式/模式B 模式/内模式C 外模式/内模式D 逻辑模式/内模式参考答案B6. 关系模型的数据结构是A 树B 图C 表D 二维表参考答案D7. 数据字典是数据库管理系统的重要组成部分,其中存储的各类信息通常由A 数据库管理员维护B 程序员维护C 数据库管理系统维护D 一般用户维护参考答案A8. E-R图用于描述数据库的A 概念模型B 数据模型C 存储模型D 逻辑模型参考答案A9.下面列出的条目中,()不是数据库技术的主要特点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中南大学考试试卷2015--2016学年上学期期末考试试题时间100分钟数据结构课程56学时3.5学分考试形式:闭卷专业年级:计算机科学与技术10级总分100分,占总评成绩70%姓名班级学号(本试卷共四道大题,答案全部做在答题纸上!)一、选择题(每题2分,共24分)1.以下数据结构中,属于线性结构的是()A.图B.栈C.二分查找树D.森林2.用二分法查找表(a0,a1,a2,a3,……a16),需要比较2次才能找到的元素是()A.a7和a16 B.a11和a13C.a1和a14 D.a3和a123.用概率查找改进查找效率,是经过多次查找以后使得()A.查找次数越少的元素查找速度越快B.查找次数越少的元素越往前存放C.查找次数越多的元素越往后存放D.查找次数越多的元素查找速度越快4.二分查找要求元素( )A.有序、顺序存储B.有序、链式存储C.无序、顺序存储D.无序、链式存储5.已知pPre为指向链表中某结点的指针,pNew是指向新结点的指针,以下哪段伪码算法是将一个新结点插入到链表中pPre所指向结点的后面?()A.pPre->link = pNew; pNew = null;B.pPre->link = pNew->link; pNew->link = null;C.pNew->link = pPre->link; pPre->link = pNew;D.pNew->link = pPre->link; pPre->link = null;6.在递归算法执行过程中,计算机系统必定会用到的数据结构是()A.队列B.链表C.栈D.二叉树7.一个队列的入列序为ABCD,则队列的可能输出序列为()A.DCBA B.ABCDC.ADCB D.CBDA8.具有10个叶子结点的二叉树中有()个度为2的结点A.8B.9C.10D.119.若A=10,B=4,C=6,D=4,E=15则后缀表达式“AB*CD+-E+”的值为( )。
A.45B.31C.53D.6510.在一个具有n个顶点的无向图中,要连通全部顶点至少需要()条边。
A.n B.n+1C.n-1D.n/211.对数据序列{15,9,7,8,20,-1,4}进行排序,进行一趟后数据的排序变为{9,15,7,8,20,-1,4},则采用的是()算法。
A.直接选择排序B.冒泡排序C.直接插入排序D.希尔排序12.以下哪个算法可以判断出一个有向图中是否有回路()。
A.广度优先遍历B.拓扑排序C.求最短路径D.求关键路径二、填空题(每题2分,共20分)1.一个算法的时间效率表达式是40n2+2log2n+1000, 这个算法的大O表达式是。
2.向一个长度为n的顺序表中的第i个元素(1≤i≤n)之前插入一个元素时,需要向后移动_____ _____个元素。
3.如果经常对线性表进行插入和删除运算,则最好采用存储结构。
4.在有n个叶子结点的哈夫曼树中,总结点数是_______。
5.带头结点的双循环链表L为空表的条件是_______。
6.用数组Q(其下标在0…n-1之间,共有n个元素)表示一个循环队列,front 为当前队头元素的前一个位置,rear为队尾元素的位置,假设队列中的元素个数总小于n,则求队列中元素个数的公式是_____________________。
7.在双链表中,在指针P所指结点前面插入一个结点*S时的语句序列是:S->next=P;S->prior=P->prior;P->prior=S;_______;8.表达式a*(b+c)-d的后缀表达式是。
9.下面程序段的功能是实现冒泡排序算法,请在下划线处填上正确的语句。
void bubble(int r[n]){for(i=1;i<=n-1; i++){for(exchange=0,j=0; j<n-i;j++)if (r[j]>r[j+1]){temp=r[j+1];______________;r[j]=temp;exchange=1;} if (exchange==0) return;}}10.下面程序段的功能是实现二分查找算法,请在下划线处填上正确的语句。
struct record{int key; int others;};int bisearch(struct record r[ ], int k){int low=1,mid,high=n;while(low<=high){________________________________;if(r[mid].key==k) return(mid);else if(r[mid].key>k) high=mid-1;else low=mid+1;}return(0);}三、应用题(每题9分,共36分)1.已知一棵二叉树,其中序序列DBCAFGE,后序序列DCBGFEA,构造该二叉树。
2.如下图所示为5个乡镇之间的交通图,乡镇之间道路的长度如图中边上所注。
现在要在这5个乡镇中选择一个乡镇建立一个消防站,问这个消防站应建在哪个乡镇,才能使离消防站最远的乡镇到消防站的路程最短。
试回答解决上述问题应采用什么算法,并写出应用该算法解答上述问题的每一步计算结果。
由弗洛伊德(Floyd )算法进行求解,具体步骤如下:⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡∞∞∞∞∞∞∞∞=-0636044069601239120)1(D ,⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡∞∞∞∞=061215360412406915601239120)0(D ; ⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡∞∞∞∞=061215360412406915601239120)1(D ,⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=06121536041013124069151060123139120)2(D ; ⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=06101536041013124069151060123139120)3(D ,⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=061015360410910406915106012399120)4(D 。
设乡镇v i 到其他各乡镇的最远距离为max_disdance(v i ),则有:max_disdance(v 1)=12,max_disdance(v 2)=15,max_disdance(v 3)=10,max_disdance(v4)=10,max_disdance(v 5)=15,所以可知消防站应建在v 3或v 4乡镇,才能使离消防站最远的乡镇到消防站的路程最短。
3. 设哈希(Hash )表的地址范围为0~17,哈希函数为:H (K )=K MOD 16。
K 为关键字,用线性探测法再散列法处理冲突,输入关键字序列:(10,24,32,17,31,30,46,47,40,63,49)造出Hash 表,试回答下列问题: ⑴画出哈希表的示意图;⑵若查找关键字63,需要依次与哪些关键字进行比较?⑶若查找关键字60,需要依次与哪些关键字比较?⑷假定每个关键字的查找概率相等,求查找成功时的平均查找长度。
然后顺移,与46,47,32,17,63相比,一共比较了6次!(3)查找60,首先要与H(60)=60%16=12号单元内容比较,但因为12号单元为空(应当有空标记),所以应当只比较这一次即可。
2分(4)对于黑色数据元素,各比较1次;共6次; 2分对红色元素则各不相同,要统计移位的位数。
“63”需要6次,“49”需要3次,“40”需要2次,“46”需要3次,“47”需要3次,所以ASL=1/11(6+2+3×3)=17/11=1.5454545454≈1.554.假设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别为0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10。
试为这8个字母设计哈夫曼编码。
使用0~7的二进制表示形式是另一种编码方案。
对于上述实例,比较两种方案的优缺点。
解:方案1;哈夫曼编码先将概率放大100倍,以方便构造哈夫曼树。
w={7,19,2,6,32,3,21,10},按哈夫曼规则:【[(2,3),6], (7,10)】, ……19, 21, 32(40)(60)19 21 32 (28)()(11)7 10 6 (5)2 3方案比较:方案2的WPL=3(0.19+0.32+0.21+0.07+0.06+0.10+0.02+0.03)=3结论:哈夫曼编码优于等长二进制编码四、算法设计题(每题10分,共20分)1.设有一组初始记录关键字序列(K1,K2,…,Kn),要求设计一个算法能够在O(n)的时间复杂度内将线性表划分成两部分,其中左半部分的每个关键字均小于Ki,右半部分的每个关键字均大于等于Ki。
void quickpass(int r[], int s, int t){int i=s, j=t, x=r[s];while(i<j){while (i<j && r[j]>x) j=j-1; if (i<j) {r[i]=r[j];i=i+1;}while (i<j && r[i]<x) i=i+1; if (i<j) {r[j]=r[i];j=j-1;}}r[i]=x;}2.试写一算法,判断以邻接表方式存储的有向图中是否存在由顶点Vi到顶点Vj的路径(i<>j)。
注意:算法中涉及的图的基本操作必须在存储结构上实现。
在有向图中,判断顶点Vi和顶点Vj间是否有路径,可采用遍历的方法,从顶点Vi出发,不论是深度优先遍历(dfs)还是宽度优先遍历(bfs),在未退出dfs或bfs前,若访问到Vj,则说明有通路,否则无通路。
设一全程变量flag。
初始化为0,若有通路,则flag=1。
算法 int visited[]=0; //全局变量,访问数组初始化int dfs(AdjList g , vi)//以邻接表为存储结构的有向图g,判断顶点Vi到Vj是否有通路,返回1或0表示有或无{ visited[vi]=1; //visited是访问数组,设顶点的信息就是顶点编号。
p=g[vi].firstarc; //第一个邻接点。
while ( p!=null){ j=p->adjvex;if (vj==j) { flag=1; return(1);} //vi 和 vj 有通路。
if (visited[j]==0) dfs(g,j);p=p->next; }//whileif (!flag) return(0);}//结束。