版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、绪论 5. 选择题:CCBDCA 6. 试分析下面各程序段的时间复杂度。 (1) O(1) (2) O( m*n) (3) O( n2) (4) O (log3n) (5) 因为x+共执行了 n-1+ n-2+1= n(n-1)/2,所以执行时间为 O ( n2) (6) 0() 线性表 1选择题 babadbcabdcddac 2算法设计题 (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-n ext=NULL; while ( p) q=p-next; / q指向*p的后继 p-n ext=L-n ext; L- next=p; / *p插入在头结点之后 p = q; ( 10)已知长度为 n 的线性表 A 采用顺序存储结构,请写一时间复杂度
3、为 O(n) 、空间 复杂度为 O(1) 的算法,该算法删除线性表中所有值为 item 的数据元素。 题目分析 在顺序存储的线性表上删除元素,通常要涉及到一系列元素的移动(删第 i 个元素,第 i+1 至第 n 个元素要依次前移) 。本题要求删除线性表中所有值为 item 的数据 元素,并未要求元素间的相对位置不变。因此可以考虑设头尾两个指针(i=1 , j=n ),从两 端向中间移动, 凡遇到值 item 的数据元素时, 直接将右端元素左移至值为 item 的数据元素 void Delete ( ElemType A , intn ) / A是有n个元素的一维数组,本算法删除A中所有值为it
4、em的元素。 i=1 ; j=n ;/设置数组低、高端指针(下标)。 while ( ij ) while ( ij /若值不为 item ,左移指针。 if ( ij ) while ( ij /若右端元素值为 item ,指针左移 if ( ij ) Ai+=Aj-; 算法讨论因元素只扫描一趟,算法时间复杂度为O (n)。删除元素未使用其它辅助 空间,最后线性表中的元素个数是 j。 第 3 章 栈和队列 1 选择题 CCDAADABCDDDBCB 2.算法设计题 (2)回文是指正读反读均相同的字符序列,如“ abba和“ abdba均是回文,但“good” 不是回文。试写一个算法判定给定的
5、字符向量是否为回文。(提示:将一半字符入栈 ) 根据提示,算法可设计为: / 以下为顺序栈的存储结构定义 #define StackSize 100 /假定预分配的栈空间最多为 100 个元素 typedef char DataType;/假定栈元素的数据类型为字符 typedef struct DataType dataStackSize; int top; SeqStack; int IsHuiwen( char *t) / 判断 t 字符向量是否为回文,若是,返回1,否则返回 0 SeqStack s; int i , len; char temp; InitStack( len=str
6、len(t); / 求向量长度 for ( i=0; ilen/2; i+)/将一半字符入栈 Push( while( !EmptyStack( if( temp!=Si) return 0 ;/ 不等则返回 0 else i+; return 1 ; / 比较完毕均相等则返回 1 (7)假设以数组 Qm存放循环队列中的元素,同时设置一个标志tag,以tag = 0和 tag = 1来区别在队头指针(front)和队尾指针(rear)相等时,队列状态为 空”还是 满”试编 写与此结构相应的插入(enqueue)和删除(dlqueue)算法。 【解答】 循环队列类定义 #include temp
7、late classQueue /循环队列的类定义 public: Queue ( int=10 ); Queue ( ) delete Q; void EnQueue ( Type Type DeQueue ( ); Type GetFront ( ); void MakeEmpty ( ) front = rear = tag = 0;/ 置空队列 int IsEmpty ( ) const return front = rear /判队列空否 int IsFull ( ) const return front = rear / 判队列满否 private: int rear, front
8、, tag; Type *Q; /队尾指针、队头指针和队满标志 /存放队列元素的数组 int m;/队列最大可容纳元素个数 构造函数 template Queue: Queue ( intsz ) : rear (0), front (0), tag(0), m (sz) /建立一个最大具有 m 个元素的空队列。 Q = new Type m ;/ 创建队列空间 assert ( Q != 0 );/断言: 动态存储分配成功与否 插入函数 template voidQueue : EnQueue ( Type rear = ( rear + 1 ) % m; Qrear = item; tag
9、 = 1; /判队列是否不满,满则出错处理 /队尾位置进 1, 队尾指针指示实际队尾位置 /进队列 /标志改 1,表示队列不空 /判断队列是否不空,空则出错处理 / 队头位置进 1, 队头指针指示实际队头的前一位置 /标志改 0, 表示栈不满 /返回原队头元素的值 /判断队列是否不空,空则出错处理 /返回队头元素的值 删除函数 template Type Queue : DeQueue ( ) assert ( ! IsEmpty ( ) ); front = ( front + 1 ) % m; tag = 0; return Qfront; 读取队头元素函数 template Type Q
10、ueue : GetFront ( ) assert ( ! IsEmpty ( ) ); return Q(front + 1) % m; 第 4 章 串、数组和广义表 1选择题 BBCAB BBCBB ABDCB C 2.综合应用题 ( 1)已知模式串 t= abcaabbabcab 写出用 KMP 法求得的每个字符对应的 next 和 nextval 函数值。 模式串 t 的 next 和 nextval 值如下: j 12345678910 11 12 t串 abcaabbab cab n extj 011122312345 n extvalj 011021301105 (3)数组A中
11、,每个元素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) s+142 请将香蕉banana用工具H( ) Head( ),T( ) Tail() 从L中取出。 L=(apple,(ora nge,(strawbe
12、rry,(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; i36 ; i+ ) numi =0; / 初始化 while (ch = getchar () != #)/ #表示输入字符串结束。 if ( 0 =ch= 9) i=ch 48;numi+ ;/ 数字字
13、符 else if ( A =ch= Z) i=ch-65+10;numi+ ; / 字母字符 for (i=0 ; i10 ; i+ ) /输出数字字符的个数 printf(数字 d 的个数=% dn ”,i , numi); for (i = 10; ilchild=NULL /判断该结点是否是叶子结点(左孩子右孩子都为空),若是则 返回1 else return LeafNodeCou nt(T-lchild)+LeafNodeCou nt(T-rchild); (3) 交换二叉树每个结点的左孩子和右孩子。 void Cha ngeLR(BiTree if(T-lchild=NULL e
14、lse temp = T-lchild; T-lchild = T-rchild; T-rchild = temp; Cha ngeLR(T-lchild); Cha ngeLR(T-rchild); 1 选择题 CBBBCBABAADCCDDB 2应用题 (1)已知如图6.27所示的有向图,请给出: 每个顶点的入度和出度; 邻接矩阵; 邻接表; 逆邻接表。 1 2 3 5 AH I 1 1 3 f 0 2 2 3 ) J 00000 10 0 10 0 01000 C01011 100000 J10010. 逆命接表 邨接表 图6.28 无 (2)已知如图6.28所示的无向网,请给出: 邻接
15、矩阵; 邻接表; 最小生成树 5 4 5 5 3 t. d 5 d 5 e 7 f 3 g 2 h 6 g 6 A c 3 c 5 b 5 c 5 d 7 e 3 f 2 d 4 b 4 a 4 a 3 b 5 b 9 d 6 d 5 c 5 a b c d e f g h (3)已知图的邻接矩阵如6.29所示。试分别画出自顶点1出发进行遍历所得的深度优 广度优先生成树 先生成树和广度优先生成树。 深度优先生成树 )0 1 IJ o 0 0 0 0 0 1 0 001 00D (4)有向网如图6.29所示,试用迪杰斯特拉算法求出从顶点 路径,完成表6.9。 a到其他各顶点间的最短 图6.29邻
16、接矩阵 V 点 i=1 i=2 i=3 i=4 i=5 i=6 b 15 (a,b) 15 (a,b) 15 (a,b) 15 b) 15 (a,b) 15 (a.b) c 2 (ac) d 12 (a,d) 12 (a,d) 11 (a,c,f,d) 11 (a.c.f.d) e oo 10 (a,c,e) 10 (a.c.e) f oo 6 (a.c.f) g co co 16 (a,c,f,g) 16 (a,c,f,g) .14 (a,c,f,d,g) S 终 点集 a,c a,c,f a,c,f,e a,c,f,e,d a,c,f,e,d,g a,c,f,e,d,g,b 第7章查找 i
17、选择题 CDCABCCCDCBCADA 2应用题 (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元素比较; 3 层共查找 1 + 2X 2+ 4X 3=17 查找元素 90,需依次与 30, 63,87, 95元素比较;
18、 求ASL之前,需要统计每个元素的查找次数。判定树的前 次;但最后一层未满,不能用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/17 2 丿1 21 4913 验算方法:用中序遍历应得到排序结果:2,4,7,9,11,12,13,16,17 , 21 (5)设哈希表的地址范围为 017,哈希函数为:H ( key) =key%16。用线性探测法 处理冲突,输入关键字序列:(10
19、, 24, 32, 17, 31, 30, 46, 47, 40, 63, 49),构造哈 希表,试回答下列问题: 画出哈希表的示意图; 若查找关键字63,需要依次与哪些关键字进行比较? 若查找关键字60,需要依次与哪些关键字比较? 假定每个关键字的查找概率相等,求查找成功时的平均查找长度。 画表如下: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 32 17 63 49 24 40 10 30 31 46 47 查找63,首先要与H(63)=63%16=15号单元内容比较,即63 vs 31 ,no; 然后顺移,与46,47,32,17,63相比,一
20、共比较了6次! 查找60,首先要与H(60)=60%16=12号单元内容比较, 但因为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,用开放地址法的二次探测法处理冲突。要求:对该关键字序
21、列构造哈希表,并 计算查找成功的平均查找长度。 散列地址 0 1 2 3 4 5 6 7 8 9 关键字 14 01 9 23 84 27 55 20 比较次数 1 1 1 2 3 4 1 2 平均查找长度: 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 选择题 CDBDCBCDBCBCCCA 2应用题 (1)设待排序的关键字序列为 12 , 2, 16, 30,
22、 28, 10, 16* , 20, 6, 18,试分别写 出使用以下排序方法,每趟排序结束后关键字序列的状态。 直接插入排序 折半插入排序 希尔排序(增量选取 5, 3, 1) 冒泡排序 快速排序 简单选择排序 堆排序 二路归并排序 直接插入排序 2 12 16 30 28 10 16* 20 6 18 2 12 16 30 28 10 16* 20 6 18 2 12 16 30 28 10 16* 20 6 18 2 12 16 28 30 10 16* 20 6 18 2 10 12 16 28 30 16* 20 6 18 2 10 12 16 16* 28 30 20 6 18 2
23、 10 12 16 16* 20 28 30 6 18 2 6 10 12 16 16* 20 28 30 18 2 6 10 12 16 16* 18 20 28 30 折半插入排序 排序过程同 布尔排序(增量选取 5, 3, 1) 10 2 16 6 18 12 16* 20 30 28 (增量选取 5) 6 2 12 10 18 16 16* 20 30 28 (增量选取 3) 2 6 10 12 16 16* 18 2C )28 30 (增量选取1) 冒泡排序 2 12 16 28 10 16* 20 6 18 30 2 12 16 10 16* 20 6 18 28 30 2 12
24、10 16 16* 6 18 20 28 30 2 10 12 16 6 16* 18 20 28 30 2 10 12 6 16 16* 18 20 28 30 2 10 6 12 16 16* 18 20 28 30 2 6 10 12 16 16* 18 20 28 30 2 6 10 12 16 16* 18 20 28 30 快速排序 12 6 2 10 12 28 30 16* 20 16 18 6 2 6 10 12 28 30 16* 20 16 18 28 2 6 10 12 18 16 16* 20 28 30 18 2 6 10 12 16* 16 18 | 2028 30 16* 2 6 10 12 16* 16 18 20 28 30 左子序列递归深度为 1,右子序列递归深度为 3 简单选择排序 2 12 16 30 28 10 16* 20 6 18 2 6 16 30 28 10 16* 20 12 18 2 6 10 30 28 16 16* 20 12 18 2 6 10
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 胃溃疡合并出血护理指南
- 中小学教辅材料管理专项整治工作方案
- 2025汽车维护考试题及答案
- (完整版)外墙岩棉板保温施工方案
- 2025版妊娠糖尿病常见症状及护理指南探讨
- 2025版强直性脊柱炎常见症状及护理指南培训
- 2025版偏头痛常见症状及护理调理建议
- 餐饮激励奋战一线员工
- 经管类跨专业综合实训总结
- UI设计小图标设计规范与应用
- 中学X校园体育艺术科技节活动方案
- GB/T 25413-2010农田地膜残留量限值及测定
- GB/T 13315-1991锻钢冷轧工作辊超声波探伤方法
- 高等化工传递过程原理(研究生)全册配套完整课件3
- 尿素装置工艺流程介绍课件
- 美容院员工劳动合同书
- DB11-T 2006-2022 既有建筑加固改造工程勘察技术标准
- 囊袋皱缩综合征课件
- 儿童体格生长指标测量演示教学课件
- 软件运维服务合同
- ]非常规油气资源地球物理勘探技术发展现状及趋势-汪忠德
评论
0/150
提交评论