




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第九章第九章 查找查找 9.1 静态查找表静态查找表 9.2 动态查找表动态查找表 9.3 哈希表哈希表一、查找表一、查找表( (Search Table)Search Table)查找的概念查找的概念 查找表是由同一类型的数据元素(或记录)构成的集合 对查找表的操作:1.查询某个“特定的”数据元素是否在查找表中;2.检索某个“特定的”数据元素的各种属性;3.在查找表中插入一个数据元素;4.从查找表中删去某个数据元素。 静态查找表:仅作查询和检索操作的查找表。 动态查找表:在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已存在的某个数据元素二、关键字二、关键字( (Key)Ke
2、y) 关键字是数据元素(或记录)中某个数据项的值,用以标识(识别)一个数据元素(或记录) 主关键字:可以识别唯一的一个记录的关键字 次关键字:能识别若干记录的关键字三、查找三、查找( (Searching)Searching) 查找是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。 查找成功:在查找表中查找到指定的记录;查找不成功:在查找表中没有找到指定记录 由于查找表中的数据元素之间不存在明显的组织由于查找表中的数据元素之间不存在明显的组织规律,因此不便于查找。规律,因此不便于查找。 为了提高查找的效率,为了提高查找的效率, 需要在查找表中的元素需要在查找表中的元
3、素之间人为地附加某种确定的关系,换句话说,用另之间人为地附加某种确定的关系,换句话说,用另外一种结构来表示查找表。外一种结构来表示查找表。如何进行查找?如何进行查找?查找的方法取决于查找表的结构。查找的方法取决于查找表的结构。9.1 静态查找表静态查找表typedef struct ElemType *elem; int length; / 表的长度 SSTable;假设静态查找表静态查找表的顺序存储结构顺序存储结构为n 顺序查找顺序查找( (算法算法) )9.1.1 顺序查找表顺序查找表1.从表中最后一个记录开始 2.逐个进行记录的关键字和给定值的比较 3.若某个记录比较相等,则查找成功 4
4、.若直到第1个记录都比较不等,则查找不成功 以顺序表或线性链表表示静态查找表以顺序表或线性链表表示静态查找表21 37 88 19 92 05 64 56 80 75 13 0 1 2 3 4 5 6 7 8 9 10 11 ST.Lengthn顺序查找顺序查找( (算法实现算法实现) )int Search_Seq(SSTable ST, KeyType key) / 若查找成功,返回位置若查找成功,返回位置ST.elem0.key = key; / “哨兵哨兵”,for (i=ST.length; ST.elemi.key!=key; -i); / 从后往前找从后往前找return i;
5、/ 找不到时找不到时,i=0 / Search_Seq设置设置“哨兵哨兵”的目的是省略对下标越界的检查,提高算法执行速度的目的是省略对下标越界的检查,提高算法执行速度n顺序查找顺序查找( (举例举例) )i=11找找64监视哨监视哨i=7i=8i=9i=10比较次数比较次数=5比较次数:比较次数:查找第查找第n个元素:个元素: 1查找第查找第n-1个元素:个元素:2.查找第查找第1个元素:个元素: n查找第查找第i个元素:个元素: n+1-i查找失败查找失败: n+1 0 1 2 3 4 5 6 7 8 9 10 1164513192137566475808892 平均查找长度定义为确定记录在
6、表中的位置所进行的和关键字比较的次数的平均值 n ASL = PiCi i=1n为查找表的长度,即表中所含元素的个数Pi为查找第i个元素的概率(Pi=1)Ci是查找第i个元素时同给定值K比较的次数n 衡量查找算法的标准衡量查找算法的标准: : 时间复杂度、空间复杂度 平均查找长度ASLn顺序查找顺序查找( (算法性能分析算法性能分析) ) 对顺序表而言,Ci=n-i+1 在等概率查找的情况下,Pi=1/n ASL=n*P1 +(n-1)P2 + 2Pn-1+ Pn = (n+1)/2n 顺序查找顺序查找( (特点特点) ) 优点:1.简单2.适应面广(对表的结构无任何要求) 缺点:1.平均查找
7、长度较大2.特别是当n很大时,查找效率很低9.1.2 有序表的查找有序表的查找 折半查找的原理是:1.先确定待查记录所在的范围(前部分或后部分)2.逐步缩小(一半)范围直到找(不)到该记录为止若以若以有序表有序表表示静态查找表,则查找过程可以表示静态查找表,则查找过程可以基于基于“折半折半”进行。进行。折半查找折半查找( (举例成功举例成功) )找找641 2 3 4 5 6 7 8 9 10 11513192137566475808892Low=1High=11mid=61 2 3 4 5 6 7 8 9 10 11513192137566475808892Low=7High=11mid=9
8、1 2 3 4 5 6 7 8 9 10 11513192137566475808892Low=7mid=7High=8折半查找折半查找( (举例不成功举例不成功) ) 当下界low大于上界high时,说明有序表中没有关键字等于K的元素,查找不成功1 2 3 4 5 6 7 8 9 10 11513192137566475808892High=6 Low=7找找59int Search_Bin ( SSTable ST, KeyType key ) low = 1; high = ST.length; / 置区间初值置区间初值 found=false; while (low 50n50时,可得
9、近似结果时,可得近似结果1) 1(log2nASLbs折半查找折半查找( (特点特点) )折半查找的效率比顺序查找高(特别是在静态查找表的长度很长时)折半查找只能适用于有序表,并且以顺序存储结构存储9.1.4 分块查找分块查找 分块查找是一种索引顺序表(分块有序表)查找方法,是折半查找和顺序查找的简单结合 索引顺序表(分块有序表)将整个表分成几块,块内无序,块间有序 所谓块间有序是指后一块表中所有记录的关键字均大于前一块表中的最大关键字分块查找分块查找( (分块有序表分块有序表) ) 主表:用数组存放待查记录,每个数据元素至少含有关键字域 索引表:每个结点含有最大关键字域和指向本块第一个结点的
10、指针1 2 3 4 5 6 7 8 9 10 11519132175566437888092主表主表211755929索引表索引表找找64分块查找分块查找( (性能分析性能分析) ) 若将长度为n的表分成b块,每块含s个记录,并设表中每个记录查找概率相等 用折半查找方法在索引表中查找索引块,ASL块间log2(n/s+1) 用顺序查找方法在主表对应块中查找记录,ASL块内=s/2 ASLlog2(n/s+1) + s/2第九章第九章 查找查找 9.1 静态查找表静态查找表 9.2 动态查找表动态查找表 9.3 哈希表哈希表9.2.1 二叉排序树和平衡二叉树二叉排序树和平衡二叉树 空树或者是具有
11、如下特性的二叉树:.若它的左子树不空,则左子树上所有结点的值均小于根结点的值;.若它的右子树不空,则右子树上所有结点的值均大于根结点的值;.它的左、右子树也都分别是二叉排序树。566459237881980211375二叉排序树二叉排序树( (查找查找) ) 二叉排序树又称二叉查找树 查找算法: 给定值与根结点比较:1.若相等,查找成功2.若小于,查找左子树3.若大于,查找右子树在二叉排序树中查找关在二叉排序树中查找关键字值等于键字值等于3737, ,8888, ,949456645923788198021137594二叉排序树二叉排序树( (插入插入) )二叉排序树是一种动态树表当树中不存在
12、查找的结点时,作插入操作新插入的结点一定是叶子结点(只需改动一个结点的指针)该叶子结点是查找不成功时路径上访问的最后一个结点左孩子或右孩子(新结点值小于或大于该结点值)56645923788198021137594二叉排序树二叉排序树( (生成举例生成举例) ) 画出在初始为空的二叉排序树中依次插入56,64,92,80,88,75时该树的生长全过程566492888075n 中序遍历二叉排序树,可得到一个关中序遍历二叉排序树,可得到一个关键字的有序序列键字的有序序列,如如5,13,19,21,37,56,64,92,75,80,88二叉排序树二叉排序树( (中序遍历中序遍历) )bool S
13、earchBST (BSTree T, KeyType kval, BSTree f, BSTree &p )/ 根指针根指针T所指二叉查找树中递归查找关键字等于所指二叉查找树中递归查找关键字等于kval的数据元素的数据元素,若若查找成查找成 功功,则指针则指针p指向该数据元素结点指向该数据元素结点,并返回并返回TRUE,否则指针否则指针p指向指向查找路径上访问的最后一个结点并返回查找路径上访问的最后一个结点并返回FALSE,指针指针f指向指向T的双亲的双亲,其其初始调用值为初始调用值为NULLif (!T) p = f; return FALSE; / 查找不成功查找不成功else if (
14、 key = T-data.key ) p = T; return TRUE; / 查找成功查找成功else if ( key data.key )return SearchBST (T-lchild, key, T, p ); / 返回在左子树中继续查找所得结果返回在左子树中继续查找所得结果else return SearchBST (T-rchild, key, T, p ); / 返回在右子树中继续查找所得结果返回在右子树中继续查找所得结果 / SearchBST 二叉排序树二叉排序树( (查找查找) ) bool Insert BST(BiTree &T, ElemType e ) /
15、当二叉查找树T中不存在关键字等于 e.key 的数据元素时,/ 插入 e 并返回 TRUE,否则返回 FALSEif (!SearchBST ( T, e.key, NULL, p ) / 查找不成功查找不成功s = new BiTNode;if (!s) exit(1); / 存储分配失败存储分配失败s-data = e; s-lchild = s-rchild = NULL; if ( !p ) T = s; / 插入插入 *s 为新的根结点为新的根结点else if ( e.key data.key ) p-lchild = s;/ 插入插入 *s 为为 *p 的左孩子的左孩子else
16、p-rchild = s; / 插入插入 *s 为为 *p 的右孩子的右孩子return TRUE; / ifelse return FALSE; / Insert BST 二叉排序树二叉排序树( (删除删除) ) 删除二叉排序树中的一个结点后,必须保持二叉排序树的特性(左子树的所有结点值小于根结点,右子树的所有结点值大于根结点) 也即保持中序遍历后,输出为有序序列 被删除结点具有以下三种情况:1.是叶子结点2.只有左子树或右子树3.同时有左、右子树二叉排序树二叉排序树( (删除删除) )1.被删除结点是叶子结点 直接删除结点,并让其父结点指向该结点的指针变为空5664592378819802
17、11375删除结点删除结点88二叉排序树二叉排序树( (删除删除) )2.被删除结点只有左子树或右子树 删除结点,让其父结点指向该结点的指针指向其左子树(或右子树),即用孩子结点替代被删除结点即可56645928819802113755659237881980211375删除结点删除结点64(只有右子树只有右子树)删除结点删除结点37(只有左子树只有左子树)566459237881980211375原图原图二叉排序树二叉排序树( (删除删除) )3.被删除结点p既有左子树,又有右子树 以中序遍历时的直接前驱s替代被删除结点p,然后再删除该直接前驱(只可能有左孩子)PCpFPRfCLQSLQLS
18、qs二叉排序树二叉排序树( (删除删除) )3.被删除结点既有左子树,又有右子树(举例)56645923788198021137556649237881980215753764592218880191375原图删除结点13删除结点56二叉排序树二叉排序树( (性能分析性能分析) ) 在最好的情况下,二叉排序树为一近似完全二叉树时,其查找深度为log2n量级,即其时间复杂性为O(log2n)755619645372180138892 在最坏的情况下,二叉排序树为近似线性表时(如以升序或降序输入结点时),其查找深度为n量级,即其时间复杂性为O(n)808892647521191356375二叉排序
19、树二叉排序树( (特性特性) ) 一个无序序列可以通过构造一棵二叉排序树而变成一个有序序列(通过中序遍历) 插入新记录时,只需改变一个结点的指针,相当于在有序序列中插入一个记录而不需要移动其它记录 二叉排序树既拥有类似于折半查找的特性,又采用了链表作存储结构 但当插入记录的次序不当时(如升序或降序),则二叉排序树深度很深(11),增加了查找的时间平衡二叉树平衡二叉树 AVL(AVL(定义定义) ) 平衡二叉树是二叉排序(查找)树的另一种形式 平衡二叉树又称AVL树(Adelsen-Velskii and Landis) 其特点为:树中每个结点的左、右子树深度之差的绝对值不大于1,即|hL-hR
20、|1566459237881980211375AVL树非AVL树565641913753780928821平衡二叉树平衡二叉树 AVLAVL( (平衡因子平衡因子) ) 每个结点附加一个数字, 给出该结点左子树的高度减去右子树的高度所得的高度差,这个数字即为结点的平衡因子balance AVL树任一结点平衡因子只能取 -1, 0, 156564191375378092882100-10-1000100平衡二叉树平衡二叉树 AVLAVL( (平衡化旋转平衡化旋转) ) 如果在一棵平衡的二叉查找树中插入一个新结点,造成了不平衡。此时必须调整树的结构,使之平衡化。 平衡化旋转(处理)有两类:1.单向
21、旋转 (单向右旋和单向左旋)2.双向旋转 (先左后右旋转和先右后左旋转)平衡二叉树平衡二叉树 AVLAVL( (平衡化单向旋转平衡化单向旋转) ) 如果这三个结点处于一条直线上(“/”型或“”型),则采用单向旋转进行平衡化 单向旋转分为单向右旋(“/”型)和单向左旋(“”型)ACBCBA单向左旋单向左旋ACBABC单向右旋单向右旋平衡二叉树平衡二叉树 AVLAVL( (平衡化双向旋转平衡化双向旋转) ) 如果这三个结点处于一条折线上(“”型),则采用双向旋转进行平衡化。 双旋转分为先左后右(“”型)ACB先左后右旋转先左后右旋转ACBABCBCA先右后左旋转先右后左旋转ACBABC平衡二叉树平
22、衡二叉树 AVLAVL( (单向右旋单向右旋) ) 在B左子树BL上插入新结点使其高度增1,导致结点A的平衡因子增到 +2,造成不平衡。hhhAARBRBBLhh+1BAARBRBLhhh+1ARBRABBLh 为使树恢复平衡,从A沿插入路径连续取3个结点A、B和BL(“/”型) 以结点B为旋转轴,将结点A顺时针(右)旋转。平衡二叉树平衡二叉树 AVLAVL( (单向左旋单向左旋) ) 在B右子树BR中插入新结点,该子树高度增1导致结点A的平衡因子变成-2,出现不平衡。hhhABBRALBLhhh+1ALABBRBLhhh+1BBRAALBL 沿插入路径检查三个结点A、B和BR(“”型) 以结
23、点B为旋转轴,让结点A反时针(左)旋转平衡二叉树平衡二叉树 AVLAVL( (先左后右双向旋转先左后右双向旋转) ) 在C的子树CL或CR中插入新结点,该子树的高度增1。结点A的平衡因子变为+2,发生了不平衡hhAARCBLh-1h-1BCLCRhhAh-1hARCBLBCLCR平衡二叉树平衡二叉树 AVLAVL( (先左后右双向旋转先左后右双向旋转) ) 再以结点C为旋转轴,做单向右旋hhAARCBLh-1hBCLCRhhAh-1hARCBLBCLCR 从结点A起沿插入路径选取3个结点A、B和C(“”型) 以结点B为旋转轴,作单向右旋hhABBRh-1hALCLCRC 再以结点C为旋转轴,作
24、单向左旋hhAh-1hBBRCALCLCRhhABhALCLCRh-1CBR平衡二叉树平衡二叉树 AVLAVL( (举例举例) ) 画出在初始为空的AVL树中依次插入64,5,13,21,19,80,75,37,56时该树的生长过程,并在有旋转时说出旋转的类型。64645645左右双旋564521641234第九章第九章 查找查找 9.1 静态查找表静态查找表 9.2 动态查找表动态查找表 9.3 哈希表哈希表9.3.1 哈希表哈希表(散列表散列表)9.3哈希表哈希表 哈希(Hash)表又称散列表 散列表是一种直接计算记录存放地址的方法,它在关键码与存储位置之间直接建立了映象。 哈希函数是从关
25、键字空间到存储地址空间的一种映象 哈希函数在记录的关键字与记录的存储地址之间建立起一种对应关系。可写成:addr(ai)= H(keyi)H(H() )为哈希函数为哈希函数keyikeyi是表中元素是表中元素aiai关键字关键字, ,addr(aiaddr(ai) )是存储地址是存储地址哈希表哈希表( (查找查找) ) 哈希查找也叫散列查找,是利用哈希函数进行查找的过程。 首先利用哈希函数及记录的关键字计算出记录的存储地址 然后直接到指定地址进行查找 不需要经过比较,一次存取就能得到所查元素哈希表哈希表( (冲突冲突) ) 不同的记录,其关键字通过哈希函数的计算,可能得到相同的地址 把不同的记
26、录映射到同一个散列地址上,这种现象称为冲突哈希表哈希表( (定义定义) ) 根据设定的哈希函数 H(key) 和所选中的处理冲突的方法 将一组关键字映象到一个有限的、地址连续的地址集 (区间) 上 并以关键字在地址集中的“象”作为相应记录在表中的存储位置 如此构造所得的查找表称之为“哈希表”哈希函数哈希函数( (要求要求) )哈希函数实现的一般是从一个大的集合(部分元素,空间位置上一般不连续)到一个小的集合(空间连续)的映射一个好的哈希函数,对于记录中的任何关键字,将其映射到地址集合中任何一个地址的概率应该是相等的即关键字经过哈希函数得到一个“随机的地址”哈希函数应是简单的,能在较短的时间内计
27、算出结果。哈希函数的定义域必须包括需要存储的全部关键字,如果散列表允许有 m 个地址时,其值域必须在 0 到 m-1 之间。 散列函数计算出来的地址应能均匀分布在整个地址空间中9.3.2 哈希函数哈希函数(直接定址法直接定址法) 直接定址法中,哈希函数取关键字的线性函数 H(key) = a x key + b其中其中a a和和b b为常数为常数哈希函数哈希函数( (直接定址法举例直接定址法举例) ) H(key) = key - 2004131000062004131006邓煦男信息工程学院112004131011张国明男信息工程学院172004131017刘金棠男信息工程学院2220041
28、31022陈俊东男信息工程学院252004131025邱益林男信息工程学院312004131031陈明亮男信息工程学院322004131032郭宁男信息工程学院哈希函数哈希函数( (直接定址法特性直接定址法特性) ) 直接定址法仅适合于地址集合的大小与关键字集合的大小相等的情况 当a=1时,H(key)=key,即用关键字作地址 在实际应用中能使用这种哈希函数的情况很少哈希函数哈希函数( (数字分析法数字分析法) ) 假设关键字集合中的每个关键字都是由 s 位数字组成 (u1, u2, , us) 分析关键字集中的全体 从中提取分布均匀的若干位或它们的组合作为地址。哈希函数哈希函数( (数字分
29、析法举例数字分析法举例) ) 有80个记录,关键字为8位十进制数,哈希地址为2位十进制数8 1 3 4 6 5 3 28 1 3 4 6 5 3 28 1 3 7 2 2 4 28 1 3 7 2 2 4 28 1 3 8 7 4 2 28 1 3 8 7 4 2 28 1 3 0 1 3 6 78 1 3 0 1 3 6 78 1 3 2 2 8 1 7 8 1 3 2 2 8 1 7 8 1 3 3 8 9 6 78 1 3 3 8 9 6 78 1 3 6 8 5 3 78 1 3 6 8 5 3 78 1 4 1 9 3 5 58 1 4 1 9 3 5 5.分析:分析: 只取只取8
30、只取只取1 只取只取3、4 只取只取2、7、5 数字分布近乎随机数字分布近乎随机所以:取所以:取任意两位或两位任意两位或两位 与另两位的叠加作哈希地址与另两位的叠加作哈希地址哈希函数哈希函数( (数字分析法特性数字分析法特性) ) 数字分析法仅适用于事先明确知道表中所有关键码每一位数值的分布情况 数字分析法完全依赖于关键码集合。 如果换一个关键码集合,选择哪几位要重新决定。哈希函数哈希函数( (平方取中法平方取中法) ) 以关键字的平方值的中间几位作为存储地址。 求“关键字的平方值” 的目的是“扩大差别” 同时平方值的中间各位又能受到整个关键字中各位的影响。此方法在词典处理中使用十分广泛。它先
31、计算构成关键码的标识符的内码的平方, 然后按照散列表的大小取中间的若干位作为散列地址。哈希函数哈希函数( (平方取中法举例平方取中法举例) )标识符的八进制内码表示及其平方值哈希函数哈希函数( (平方取中法特性平方取中法特性) ) 平方取中法是较常用的构造哈希函数的方法 适合于关键字中的每一位都有某些数字重复出现且频度很高的情况 中间所取的位数,由哈希表长决定哈希函数哈希函数( (折叠法折叠法) ) 将关键字分割成位数相同的若干部分(最后部分的倍数可以不同),然后取它们的叠加和(舍去进位)为哈希地址。 移位叠加: :将分割后的几部分低位对齐相加将分割后的几部分低位对齐相加 间界叠加: :从一端
32、沿分割界来回折送,然后对齐相加从一端沿分割界来回折送,然后对齐相加哈希函数哈希函数( (折叠法举例折叠法举例) ) 关键字为:0442205864,哈希地址位数为45 8 6 44 2 2 00 41 0 0 8 8H(key)=0088移位叠加移位叠加5 8 6 40 2 2 40 4 6 0 9 2H(key)=6092间界叠加间界叠加 折叠法适合于关键字的数字位数特别多,而且每一位上数字分布大致均匀的情况哈希函数哈希函数( (除留余数法除留余数法) ) 取关键字被某个不大于哈希表长m的数p除后所得余数为哈希地址H(key) = key MOD p ( pm ) m为表长 p为不大于m的素
33、数或是不含20以下的质因子9.3.3 处理冲突的方法处理冲突的方法 “处理冲突” 的实际含义是:为产生冲突的地址寻找下一个哈希地址。 处理冲突的方法主要有三种:1.开放定址法2.再哈希法3.链地址法处理冲突的方法处理冲突的方法( (开放定址法开放定址法) )Hi = H(key)+di MOD m i=1,2,s为产生冲突的地址 H(key) 求得一个地址序列: H0, H1, H2, , Hs,1sm-1 m为哈希表长 当di取1,2,3,m-1时,称这种开放定址法为线性探测再散列 当di取= 12,22,32,时,称这种开放定址法为二次探测再散列处理冲突的方法处理冲突的方法( (开放定址法
34、线性探测开放定址法线性探测) ) 举例:给定关键字集合19,01,23,14,55,68, 11,82,36,设定哈希函数H(key)=key MOD 11 (表长=11)1901231455681182361 1 2 1 3 6 2 5 10 1 2 3 4 5 6 7 8 9 1 0 处理冲突的方法处理冲突的方法( (开放定址法二次探测开放定址法二次探测) ) 举例:给定关键字集合19,01,23,14,55,68, 11,82,36,设定哈希函数H(key)=key MOD 11 (表长=11)1 1 2 1 2 1 3 1 30 1 2 3 4 5 6 7 8 9 1 0 190123146855118236处理冲突的方法处理冲突的方法( (开放定址法特性开放定址法特性) ) 优点:只要哈希表中有空位置,总能找到一个不发生冲突的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中等教育学校安全与管理考核试卷
- 玉米淀粉在生物降解材料中的应用考核试卷
- 机械可靠性分析考核试卷
- 2025年车用打蜡机电机项目可行性研究报告
- 2025年足球杯垫项目可行性研究报告
- 2025年蛋白纯化试剂盒项目可行性研究报告
- 2025-2030中国背投电视行业深度调研及投资前景预测研究报告
- 2025-2030中国肺水肿治疗行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国肉鸭行业市场发展分析及竞争格局与投资前景研究报告
- 2025-2030中国聚乙烯覆盖膜行业市场发展趋势与前景展望战略研究报告
- 人民版四年级下册劳动教案全册2024
- 2023年《房屋建筑学》考试复习题库大全(含答案)
- 寄生虫科普讲座课件
- 四新技术培训课件
- 《社会保险法解读》课件
- 浙江嘉华晶体纤维有限公司年产300吨超高温陶瓷纤维棉及600吨高温陶瓷纤维棉制品环境影响报告表
- 渗碳渗氮的作用及氮碳共渗和碳氮共渗的区别
- 中国高铁发展史
- JGJT220-2010 抹灰砂浆技术规程
- 《交通流理论》课件
- 胰胆线阵超声内镜影像病理图谱
评论
0/150
提交评论