




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、绪论5. 选择题:CCBDCA6. 试分析下面各程序段的时间复杂度。(1) O(1)(2) O( m*n)(3) O( n2)(4) O (logj)(5) 因为x+共执行了 n-1+ n-2+, +1= n(n-1)/2,所以执行时间为 0 ( n2)(6) O( ,n)线性表1选择题babadbcabdcddac2算法设计题(6) 设计一个算法,通过一趟遍历在单链表中确定值最大的结点。ElemType Max (Li nkList L )if(L->n ext=NULL) return NULL;pmax=L-> next; /假定第一个结点中数据具有最大值p=L->n
2、ext->n ext;while(p != NULL )/如果下一个结点存在if(p->data > pmax->data) pmax=p; p=p->n ext; return pmax->data;(7) 设计一个算法,通过遍历一趟,将链表中所有结点的链接方向逆转,仍利用原表 的存储空间。void in verse(L in kList &L) /逆置带头结点的单链表Lp=L->n ext; L->n ext=NULL;while ( p) q=p->next; / q指向*p的后继p->n ext=L->n ext
3、;L-> next=p; / *p插入在头结点之后p = q;( 10)已知长度为 n 的线性表 A 采用顺序存储结构,请写一时间复杂度为 O(n) 、空间 复杂度为 O(1) 的算法,该算法删除线性表中所有值为 item 的数据元素。 题目分析 在顺序存储的线性表上删除元素,通常要涉及到一系列元素的移动(删第i 个元素,第 i+1 至第 n 个元素要依次前移) 。本题要求删除线性表中所有值为 item 的数据 元素,并未要求元素间的相对位置不变。因此可以考虑设头尾两个指针(i=1 , j=n ),从两端向中间移动, 凡遇到值 item 的数据元素时, 直接将右端元素左移至值为 item
4、 的数据元素void Delete ( ElemType A , int n )/ A是有n个元素的一维数组,本算法删除A中所有值为item的元素。i=1 ; j=n ;/设置数组低、高端指针(下标) 。while ( i<j ) while ( i<j && Ai!=item ) i+ ;/若值不为 item ,左移指针。if ( i<j ) while ( i<j && Aj=item ) j- ;/若右端元素值为 item ,指针左移 if ( i<j ) Ai+=Aj-;算法讨论因元素只扫描一趟,算法时间复杂度为O (n)。
5、删除元素未使用其它辅助空间,最后线性表中的元素个数是 j。第 3 章 栈和队列1 选择题CCDAADABCDDDBCB2.算法设计题(2)回文是指正读反读均相同的字符序列,如“ abba"和“ abdba"均是回文,但“good”不是回文。试写一个算法判定给定的字符向量是否为回文。(提示:将一半字符入栈 )根据提示,算法可设计为:/ 以下为顺序栈的存储结构定义#define StackSize 100 /假定预分配的栈空间最多为 100 个元素typedef char DataType;/假定栈元素的数据类型为字符typedef structDataType dataSta
6、ckSize;int top;SeqStack;int IsHuiwen( char *t)/ 判断 t 字符向量是否为回文,若是,返回1,否则返回 0SeqStack s;int i , len;char temp;InitStack( &s);len=strlen(t); / 求向量长度for ( i=0; i<len/2; i+)/将一半字符入栈Push( &s, ti);while( !EmptyStack( &s)/ 每弹出一个字符与相应字符比较temp=Pop (&s);if( temp!=Si) return 0 ;/ 不等则返回 0else
7、 i+;return 1 ; / 比较完毕均相等则返回 1(7)假设以数组 Qm存放循环队列中的元素,同时设置一个标志tag,以tag = 0和 tag = 1来区别在队头指针(front)和队尾指针(rear)相等时,队列状态为 空”还是 满”试编 写与此结构相应的插入(enqueue)和删除(dlqueue)算法。【解答】循环队列类定义#include <assert.h>template <class Type> classQueue /循环队列的类定义public:Queue ( int=10 );Queue ( ) delete Q; void EnQueue
8、 ( Type& item );Type DeQueue ( );Type GetFront ( );void MakeEmpty ( ) front = rear = tag = 0;/ 置空队列int IsEmpty ( ) const return front = rear && tag = 0; /判队列空否int IsFull ( ) const return front = rear && tag = 1; / 判队列满否private:int rear, front, tag; Type *Q;/队尾指针、队头指针和队满标志 /存放队列元素
9、的数组int m;/队列最大可容纳元素个数构造函数template <class Type>Queue<Type>: Queue ( intsz ) : rear (0), front (0), tag(0), m (sz) /建立一个最大具有 m 个元素的空队列。Q = new Type m ;/ 创建队列空间assert ( Q != 0 );/断言: 动态存储分配成功与否插入函数template<class Type>void Queue<Type> : EnQueue ( Type &item ) assert ( ! IsFul
10、l ( ) );rear = ( rear + 1 ) % m;Qrear = item;tag = 1;/判队列是否不满,满则出错处理/队尾位置进 1, 队尾指针指示实际队尾位置 /进队列/标志改 1,表示队列不空/判断队列是否不空,空则出错处理/ 队头位置进 1, 队头指针指示实际队头的前一位置 /标志改 0, 表示栈不满 /返回原队头元素的值/判断队列是否不空,空则出错处理/返回队头元素的值删除函数template<class Type>Type Queue<Type> : DeQueue ( ) assert ( ! IsEmpty ( ) ); front =
11、 ( front + 1 ) % m; tag = 0;return Qfront;读取队头元素函数template<class Type>Type Queue<Type> : GetFront ( ) assert ( ! IsEmpty ( ) ); return Q(front + 1) % m;第 4 章 串、数组和广义表1选择题BBCABBBCBBABDCBC2.综合应用题( 1)已知模式串 t= abcaabbabcab '写出用 KMP 法求得的每个字符对应的 next 和 nextval 函数值。模式串 t 的 next 和 nextval 值如
12、下:j12345678910 11 12t串abcaabbab cabn extj011122312345n extvalj011021301105(3) 数组A中,每个元素Ai,j的长度均为32个二进位,行下标从-1到9,列下标从1到11,从首地址S开始连续存放主存储器中,主存储器字长为16位。求: 存放该数组所需多少单元? 存放数组第4列所有元素至少需多少单元? 数组按行存放时,元素A7,4的起始地址是多少? 数组按列存放时,元素A4,7的起始地址是多少?每个元素32个二进制位,主存字长16位,故每个元素占2个字长,行下标可平移至1到11。(1) 242(2) 22(3) S+182(4)
13、 s+142 请将香蕉banana用工具H( ) Head( ),T( ) Tail() 从L中取出。L=(apple,(ora nge,(strawberry,(ba nan a),peach),pear)H ( H( T( H( T( H( T( L)(5)写一个算法统计在输入字符串中各个不同字符出现的频度并将结果存入文件(字 符串中的合法字符为A-Z这26个字母和0-9这10个数字)。void Count ()/统计输入字符串中数字字符和字母字符的个数。int i , num36;char ch ;for (i = 0; i<36 ; i+ ) numi =0; / 初始化whil
14、e (ch = getchar () != #')/ #'表示输入字符串结束。if (' 0' <=ch<= '9') i=ch 48;numi+ ;/ 数字字符else if (' A <=ch<= ' Z) i=ch-65+10;numi+ ; / 字母字符for (i=0 ; i<10 ; i+ ) /输出数字字符的个数printf("数字 d 的个数=% dn ”,i , numi);for (i = 10; i<36 ; i+ ) / 求出字母字符的个数printf(&quo
15、t;字母字符 c 的个数=% dn ”,i + 55, n umi); /算法结束。第5章树和二叉树1 选择题ADDCACCBDCCCACC2应用题(2)设一棵二叉树的先序序列:A B D F C E G H ,中序序列:B F D A G E H C 画出这棵二叉树。 画出这棵二叉树的后序线索树。 将这棵二叉树转换成对应的树(或森林)。 (2)0.07,(3)假设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别为0.19,0.02,0.06,0.32,0.03,0.21,0.10。 试为这8个字母设计赫夫曼编码。 试设计另一种由二进制表示的等长编码方案。 对于上述实例,比较两种方案
16、的优缺点。解:方案1哈夫曼编码 先将概率放大100倍,以方便构造哈夫曼树。w=7,19,2,6,32,3,21,10,按哈夫曼规则:【(2,3), 6, (7,10)】,”19, 21, 32字母对应出现1编号编码频率111000.072000.193111100.02411100.065100.32方案比较:字母编号对应编码出现频率10000.0720010.1930100.0240110.0651000.32610003的WPL方案12(0.19+0.32+0.21)+4(0.07+0.06+0.10)+5(0.02+0.03)=1.44+0.92+0.25=2.61方案 2 的 WPL
17、= 3(0.19+0.32+0.21+0.07+0.06+0.10+0.02+0.03)=3结论:哈夫曼编码优于等长二进制编码3算法设计题以二叉链表作为二叉树的存储结构,编写以下算法:(1) 统计二叉树的叶结点个数。int LeafNodeCou nt(BiTree T)if(T=NULL)return 0;/如果是空树,则叶子结点个数为0else if(T->lchild=NULL&& T->rchild=NULL)return 1; /判断该结点是否是叶子结点(左孩子右孩子都为空),若是则返回1elsereturn LeafNodeCou nt(T->lc
18、hild)+LeafNodeCou nt(T->rchild);(3)交换二叉树每个结点的左孩子和右孩子。void Cha ngeLR(BiTree &T)BiTree temp;if(T->lchild=NULL&& T->rchild=NULL)return;elsetemp = T->lchild;T->lchild = T->rchild;T->rchild = temp;Cha ngeLR(T->lchild);Cha ngeLR(T->rchild);1 选择题CBBBCBABAADCCDDB2应用题(1
19、)已知如图6.27所示的有向图,请给出: 每个顶点的入度和出度; 邻接矩阵; 邻接表;逆邻接表。1235113f0223)J00000'10 0 10 0 01000C01011100000J10010.逆命接表邨接表图6.28 无(2) 已知如图6.28所示的无向网,请给出: 邻接矩阵; 邻接表; 最小生成树5 456 :7 5:55 53d5d5e7f3g2h6g6c3c5b5c5d7e3f2d4b4a4a3b5b9d6d5c5abcdefgh先生成树和广度优先生成树。深度优先生成树)01IJo000001000100D(4) 有向网如图6.29所示,试用迪杰斯特拉算法求出从顶点a
20、到其他各顶点间的最短路径,完成表6.9。图6.29邻接矩阵(3) 已知图的邻接矩阵如6.29所示。试分别画出自顶点1出发进行遍历所得的深度优广度优先生成树V终点i=1i=2i=3i=4i=5i=6b15(a,b)15(a,b)15(a,b)15b)15(a,b)15(a,b)c2(a,c)d12(a,d)12(a,d)11(a,c,f,d)11(a,c,f,d)eoo10(a,c,e)10(a,c,e)foo6(a,c,f)gcoco16(a,c,f,g)16(a,c,f,g)14(a,c,f,d,g)S终点集a,ca,c,fa,c,f,ea,c,f,e,da,c,f,e,d,ga,c,f,e
21、,d,g,b第7章查找i选择题CDCABCCCDCBCADA2应用题(1)假定对有序表:(3, 4, 5, 7, 24, 30, 42, 54, 63, 72, 87, 95)进行折半查找, 试回答下列问题: 画出描述折半查找过程的判定树; 若查找元素54,需依次与哪些元素比较? 若查找元素90,需依次与哪些元素比较? 假定每个元素的查找概率相等,求查找成功时的平均查找长度。 先画出判定树如下(注: mid=_(1+12)/2=6): 查找元素 54,需依次与 30, 63, 42, 54元素比较; 查找元素 90,需依次与 30, 63,87, 95元素比较; 求ASL之前,需要统计每个元素
22、的查找次数。判定树的前3层共查找1 + 2X 2+ 4X 3=17次;但最后一层未满,不能用8X 4,只能用5X 4=20次,所以 ASL = 1/12 (17 + 20)= 37/12 3.08(2)在一棵空的二叉排序树中依次插入关键字序列为12, 7, 17, 11, 16, 2, 13, 9, 21,4,请画出所得到的二叉排序树。12 X/172 丿1 214913验算方法:用中序遍历应得到排序结果:2,4,7,9,11,12,13,16,17 , 21(5) 设哈希表的地址范围为 017,哈希函数为:H ( key) =key%16。用线性探测法 处理冲突,输入关键字序列:(10, 2
23、4, 32, 17, 31, 30, 46, 47, 40, 63, 49),构造哈希表,试回答下列问题: 画出哈希表的示意图; 若查找关键字63,需要依次与哪些关键字进行比较? 若查找关键字60,需要依次与哪些关键字比较? 假定每个关键字的查找概率相等,求查找成功时的平均查找长度。画表如下:012345678910111213141516173217634924401030314647查找63,首先要与H(63)=63%16=15号单元内容比较,即63 vs 31 ,no;然后顺移,与46,47,32,17,63相比,一共比较了6次! 查找60,首先要与H(60)=60%16=12号单元内容
24、比较, 但因为12号单元为空(应当有空标 记),所以应当只比较这一次即可。 对于黑色数据元素,各比较1次;共6次;对红色元素则各不相同,要统计移位的位数。“63”需要6次,“49”需要3次,“40”需要2次,“ 46”需要3次,“ 47”需要3次,所以 ASL=1/11 (6+ 2+ 3 X 3+6 )= 23/11(6)设有一组关键字 (9, 01 , 23, 14, 55, 20, 84, 27),采用哈希函数:H( key) =key %7 , 表长为10,用开放地址法的二次探测法处理冲突。要求:对该关键字序列构造哈希表,并 计算查找成功的平均查找长度。散列地址0123456789关键字
25、140192384275520比较次数11123412平均查找长度: AS%c= (1 + 1+1+2+3+4+1+2) /8=15/8以关键字 27 为例:H(27) =27%7=6(冲突)H 1=(6+1) %10=7(冲突)H2= (6+22) %10=0(冲突) H 3= (6+33) %10=5 所以比较了 4 次。第8章排序1 选择题CDBDCBCDBCBCCCA2应用题(1)设待排序的关键字序列为 12 , 2, 16, 30, 28, 10, 16* , 20, 6, 18,试分别写 出使用以下排序方法,每趟排序结束后关键字序列的状态。 直接插入排序 折半插入排序 希尔排序(增
26、量选取 5, 3, 1) 冒泡排序 快速排序 简单选择排序 堆排序 二路归并排序直接插入排序2121630281016*206182121630281016*206182121630281016*206182121628301016*206182101216283016*20618210121616*283020618210121616*202830618261012161618202830折半插入排序排序过程同布尔排序(增量选取5,3, 1)102166181216*203028 (增量选取5)621210181616*203028 (增量选取3)2610121616*182C)2830(增量选取1)冒泡排序21216281016*2061830212161016*206182830212101616*6182028302101216616*182028302101261616*182028302106121616*182028302610121616*182028302610121616*18202830快速排序1262 1012283016* 20 16 1862 61012283016* 20 16 18
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年托福考试阅读真题模拟模拟试卷英语精英提升
- 医疗领域中的AI辅助教学设备电源系统应用前景
- 教育技术在偏远地区的教师培训挑战
- 2025年云南公务员真题
- 丽水市莲都区慈善总会招聘笔试真题2024
- 公考贵州真题2025
- 2025年环保知识竞赛问答题库及答案
- 2025年化妆艺术与形象设计专业知识考试卷及答案
- 2025年公需课培训答案解析改革开放和创新发展(含答案解析)
- 建筑对口考试题库及答案
- 2025年机械设备安装工试卷及答案
- 基孔肯雅热防控培训课件
- 2025年广东省工业和信息化厅下属事业单位招聘考试笔试试题(含答案)
- 灯具户外知识培训课件
- 2025年二级中式面点师(技师)理论知识考试真题汇编(后附专业解析)
- 2025年国企中层干部竞聘考试题库(附答案)
- 捐赠助学活动方案
- 仓库超期物料管理制度
- it项目安全管理制度
- 2025至2030SMA树脂行业深度研究及发展前景投资评估分析
- 会议仓库管理制度
评论
0/150
提交评论