![2023年数据结构二叉树遍历实验报告_第1页](http://file4.renrendoc.com/view/852f8f9737edc62b27127937736a0d64/852f8f9737edc62b27127937736a0d641.gif)
![2023年数据结构二叉树遍历实验报告_第2页](http://file4.renrendoc.com/view/852f8f9737edc62b27127937736a0d64/852f8f9737edc62b27127937736a0d642.gif)
![2023年数据结构二叉树遍历实验报告_第3页](http://file4.renrendoc.com/view/852f8f9737edc62b27127937736a0d64/852f8f9737edc62b27127937736a0d643.gif)
![2023年数据结构二叉树遍历实验报告_第4页](http://file4.renrendoc.com/view/852f8f9737edc62b27127937736a0d64/852f8f9737edc62b27127937736a0d644.gif)
![2023年数据结构二叉树遍历实验报告_第5页](http://file4.renrendoc.com/view/852f8f9737edc62b27127937736a0d64/852f8f9737edc62b27127937736a0d645.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构之二叉树实验报告题目:二叉树的遍历和子树互换指导老师:杨政宇班级:通信1202姓名:徐江学号:需求分析演示程序分别用多种遍历算法遍历二叉树并把数据输出。输入字符序列,递归方式建立二叉树。3.在演示过程序中,用户敲击键盘,输入数据,即可看到数据的输出。4.实现链式存储的二叉树的多种遍历算法。遍历算法涉及:中序递归遍历算法、前序递归遍历算法【选】中序遍历非递归算法先序或后序遍历非递归算法建立中序线索,并进行中序遍历和反中序遍历5.实现二叉树的按层遍历算法6.设计一个测试用的二叉树并创建相应的内存二叉树,可以测试自己算法的边界(涉及树节点数为0、1以及>1的不同情形)。7.测试数据:输入数据:-+a*b-cd-ef概要设计说明:本程序在递归调用中用到了链表,在非递归调用时用到了栈。栈的抽象数据类型ADTStack{数据对象:D={ai|ai∈char,i=1,2,3……..}数据关系:R={<ai-1,ai>|ai-1,ai∈D,i=2,3…..}基本操作:InitStack(&S)操作结果:构造一个空栈StackEmpty(S)
ﻩ初始条件:栈S已存在。ﻫ 操作结果:若S为空栈,则返回OK,否则返回ERROR。Push(&S,e)
ﻩ初始条件:栈S已存在。
操作结果:插入元素e为新的栈顶元素。
ﻩPop(&S,&e)
初始条件:栈S已存在且非空。ﻫ
ﻩ操作结果:删除S的栈顶元素,并用e返回其值。GetTop(S,&e)ﻫﻩ初始条件:栈S已存在且非空。
ﻩ操作结果:用e返回S的栈顶元素。}2.二叉树的抽象数据类型ADTBinaryTree{ 数据对象D:D是具有相同特性的数据元素的集合。ﻫ 数据关系R:
若D=Φ,则R=Φ,称BinaryTree为空二叉树;ﻫﻩ 若D≠Φ,则R={H},H是如下二元关系;
ﻩﻩ(1)在D中存在惟一的称为根的数据元素root,它在关系H下无前驱;ﻫ ﻩ(2)若D-{root}≠Φ,则存在D-{root}={D1,Dr},且D1∩Dr=Φ;
ﻩ (3)若D1≠Φ,则D1中存在惟一的元素x1,<root,x1>∈H,且存在D1上的 ﻩﻩ关系H1⊆H;若Dr≠Φ,则Dr中存在惟一的元素xr,<root,xr>∈H,且ﻩﻩ ﻩ存在上的关系Hr⊆H;H={<root,x1>,<root,xr>,H1,Hr};
ﻩﻩ(4)(D1,{H1})是一棵符合本定义的二叉树,称为根的左子树;(Dr,{Hr})是一 ﻩﻩﻩ棵符合本定义的二叉树,称为根的右子树。ﻩ基本操作:
CreateBiTree(&T)ﻫ ﻩ初始条件:给出二叉树T的定义。
ﻩﻩ操作结果:按规定构造二叉树T。ﻩPreOrderTraverse_re(T,print())ﻫﻩﻩ初始条件:二叉树T存在,print是二叉树所有结点输出的应用函数。
ﻩ操作结果:先序递归遍历T,对每个结点调用函数print一次且仅一次。一旦ﻩ ﻩﻩ print()失败,则操作失败。 InOrderTraverse(T,print())ﻫﻩﻩ初始条件:二叉树T存在,print是二叉树所有结点输出的应用函数。ﻫﻩﻩ操作结果:中序非递归遍历T,对每个结点调用函数print一次且仅一次。一 ﻩ ﻩ旦printf()失败,则操作失败。InOrderTraverse_re(T,print())ﻩ 初始条件:二叉树T在在,print是二叉树所有结点输出的应用函数。操作结果:中序递归遍历T,对每个结点调用函数print一次且仅一次。一旦 ﻩ printf()失败,则操作失败。PreOrderTraverse(T,print())初始条件:二叉树T存在,print是二叉树所有结点输出的应用函数。
操作结果:先序非递归遍历T,对每个结点调用函数print一次且仅一次。一ﻩ 旦print()失败,则操作失败。Levelorder(T)初始条件:二叉树T在在。操作结果:分层遍历二叉树T,并输出。InOrderThreading(Thrt,T);初始条件:二叉树T在在。操作结果:中序遍历二叉树,并将其中序线索化。InOrderTraverse_Thr(T,print);初始条件:二叉树T在在。操作结果:中序非递归遍历二叉线索树TInThreading(p);初始条件:结点p在在。操作结果:结点p及子树线索化。3.主程序的流程:voidmain(){ﻩ初始化; 提醒;ﻩ执行二叉数ADT函数;}4.本程序包含三个模块主程序模块voidmain(){初始化;{接受命令;显示结果;}}链表模块。递归调用时实现链表抽象数据类型。栈模块。非递归调用时实现栈的抽象数据类型。具体设计1.宏定义及全局变量#defineTElemTypechar#defineSElemTypeBiTree#defineOK1#defineOVERFLOW0#defineERROR0#defineSTACK_INIT_SIZE100#defineSTACKINCREMENT10SqStackS;BiThrTreepre;BiThrTreei;2.函数定义intCreateBiTree(BiTree&T);ﻩ ﻩﻩﻩ //创建二叉树voidPreOrderTraverse_re(BiTreeT,void(*print)(TElemTypee));ﻩ//先序递归遍历二叉树voidInOrderTraverse(BiTreeT,int(*print)(TElemTypee));ﻩﻩ//中序非递归遍历二叉树voidInOrderTraverse_re(BiTreeT,int(*print)(TElemTypee)); //中序递归遍历二叉树voidPreOrderTraverse(BiTreeT,int(*print)(TElemTypee)); //先序非递归遍历二叉树intprint(TElemTypee); //打印元素voidInitStack(SqStack&S);ﻩﻩﻩ //栈的初始化voidPop(SqStack&S,SElemType&e);voidPush(SqStack&S,SElemType&e);intStackEmpty(SqStackS);intGetTop(SqStackS,SElemType&e);voidLevelorder(BiTreeT);voidInOrderThreading(BiThrTree&Thrt,BiThrTreeT);intInOrderTraverse_Thr(BiThrTreeT,int(*print)(TElemTypee));voidInThreading(BiThrTreep);3.二叉树链表数据结构:typedefstructBiTNode{ TElemTypedata;ﻩstructBiTNode*lchild,*rchild;ﻩPointerTagLTag,RTag;}BiTNode,*BiTree,BiThrNode,*BiThrTree;ﻩ基本操作:a)构造二叉树TintCreateBiTree(BiTree&T){ charch; scanf("%c",&ch);ﻩif(ch=='') T=NULL; elseﻩ{ﻩﻩif(!(T=(BiTNode*)malloc(sizeof(BiTNode)))) ﻩ returnERROR;ﻩ T->data=ch; if(CreateBiTree(T->lchild))T->LTag=Link;ﻩ if(CreateBiTree(T->rchild))T->RTag=Link;ﻩ} returnOK;}b)先序递归遍历二叉数T,并输出所有结点值。voidPreOrderTraverse_re(BiTreeT,int(*print)(TElemTypee)){ﻩif(T) { if(print(T->data))ﻩﻩﻩPreOrderTraverse_re(T->lchild,print); PreOrderTraverse_re(T->rchild,print); ﻩreturn; } else ﻩreturn;}c)中序非递归遍历二叉树T,并输出所有结点值voidInOrderTraverse(BiTreeT,int(*print)(TElemTypee)){ﻩSqStackS;ﻩS.base=NULL;S.top=NULL;ﻩSElemTypep=NULL;ﻩInitStack(S); Push(S,T);ﻩwhile(!StackEmpty(S))ﻩ{ while(GetTop(S,p)&&p)ﻩﻩﻩPush(S,p->lchild); ﻩPop(S,p);ﻩ if(!StackEmpty(S)) {ﻩ Pop(S,p);ﻩﻩﻩprint(p->data);ﻩ Push(S,p->rchild); ﻩ}ﻩ} return;}d)中序递归遍历二叉树T,并输出所有结点值voidInOrderTraverse_re(BiTreeT,int(*print)(TElemTypee)){if(T){InOrderTraverse_re(T->lchild,print);print(T->data);InOrderTraverse_re(T->rchild,print);}}e)中序遍历二叉树T,并将其中序线索化,Thrt指向头结点voidInOrderThreading(BiThrTree&Thrt,BiThrTreeT){ﻩThrt=(BiThrTree)malloc(sizeof(BiThrNode));ﻩThrt->LTag=Link;//建头结点ﻩThrt->RTag=Thread; Thrt->rchild=Thrt;//右指针回指 if(!T)ﻩThrt->lchild=Thrt; else {ﻩ Thrt->lchild=T;ﻩ pre=Thrt; InThreading(T);//中序遍历进行中序线索化ﻩﻩpre->rchild=Thrt; pre->RTag=Thread;//最后一个结点线索化 ﻩThrt->rchild=pre; } i=Thrt;}//InOrderThreadingf)结点p线索化voidInThreading(BiThrTreep){ if(p){ InThreading(p->lchild);//左子树线索化ﻩif(!p->lchild)//建前驱线索 ﻩ{p->LTag=Thread;p->lchild=pre;}ﻩif(!pre->rchild)//建后继线索ﻩﻩ{pre->RTag=Thread;pre->rchild=p;} pre=p;//保持pre指向p的前驱ﻩInThreading(p->rchild);//右子树线索化ﻩ} }//InThreadingg)//中序遍历线索化二叉树intInOrderTraverse_Thr(BiThrTreeT,int(*print)(TElemTypee)){ﻩBiThrTreep=NULL;ﻩp=T->lchild;ﻩwhile(p!=T)ﻩ{ﻩ while(p->LTag==Link)ﻩ ﻩp=p->lchild; if(!print(p->data))ﻩﻩ returnERROR; ﻩwhile(p->RTag==Thread&&p->rchild!=T) {ﻩﻩﻩp=p->rchild; ﻩ print(p->data); }ﻩﻩp=p->rchild;ﻩ} returnOK;}4.栈数据结构:typedefstruct{ ﻩSElemType*base;ﻩﻩSElemType*top; intstacksize;}SqStack;基本操作:a)创建一个空栈voidInitStack(SqStack&S){ S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType)); S.top=S.base;ﻩﻩ//初始为空 S.stacksize=STACK_INIT_SIZE;ﻩreturn;}b)栈顶插入元素voidPush(SqStack&S,SElemType&e){ﻩif(S.top-S.base>=S.stacksize)ﻩ{ﻩﻩS.base=(SElemType*)realloc(S.base,(STACK_INIT_SIZE+STACKINCREMENT)*sizeof(SElemType)); ﻩS.top=S.base+S.stacksize;ﻩﻩS.stacksize+=STACKINCREMENT; } *S.top++=e;}c)栈顶删除元素voidPop(SqStack&S,SElemType&e){ﻩif(S.top==S.base) ﻩreturn;ﻩe=*--S.top; return;}d)判断栈是否为空栈intStackEmpty(SqStackS) ﻩ {ﻩif(S.top==S.base) ﻩreturnOK;ﻩelseﻩﻩreturnERROR;}e)e返回S的栈顶元素intGetTop(SqStackS,SElemType&e){ﻩif(S.top==S.base)ﻩ returnERROR; e=*(S.top-1); returnOK;}5.主函数voidmain(){intflag; BiTreeT; BiThrTreeThrt;ﻩprintf("******************************************************\n");ﻩprintf("**实验12二叉树的遍历**\n"); printf("**1.实现二叉树的不同遍历算法和二叉树的中序线索化算法**\n"); printf("**a)中序递归遍历算法;**\n"); printf("**b)先序递归遍历算法;**\n");ﻩprintf("**c)中序遍历的非递归算法;**\n"); printf("**d)先序或后序遍历非递归算法之一;**\n");ﻩprintf("**e)建立中序线运用线索进行中序遍历和反中序遍历。**\n");ﻩprintf("**2.实现二叉树的按层遍历算法。**\n"); printf("**********************************************************\n"); printf("\n选择操作:\n\t1.先序与中序遍历算法\n\t2.中序线索的中序遍历和反中序遍历算法\n\t3.按层遍历算法\n请选择:"); scanf("%d",&flag); switch(flag) {case1:ﻩﻩ ﻩﻩﻩprintf("前序递归创建二叉树(空格表达此结点为空):\n");ﻩﻩ getchar();ﻩ ﻩﻩCreateBiTree(T);ﻩﻩﻩ printf("中序递归遍历输出:"); ﻩﻩInOrderTraverse_re(T,print);ﻩﻩﻩﻩprintf("\n前序递归遍历输出:"); ﻩﻩ PreOrderTraverse_re(T,print); ﻩﻩprintf("\n中序非递归遍历输出:");ﻩﻩ InOrderTraverse(T,print); ﻩﻩ printf("\n前序非递归遍历输出:");ﻩﻩﻩ PreOrderTraverse(T,print);ﻩﻩﻩ printf("\n");ﻩﻩ break; ﻩcase2:ﻩprintf("前序递归创建二叉树(空格表达此结点为空):\n"); ﻩﻩgetchar();ﻩ ﻩ CreateBiTree(T); ﻩ ﻩprintf("\n中序遍历线索化二叉树:");ﻩﻩ InOrderThreading(Thrt,T); ﻩInOrderTraverse_Thr(Thrt,print);ﻩﻩﻩ break; case3:printf("前序递归创建二叉树(空格表达此结点为空):\n");ﻩﻩﻩ getchar();ﻩﻩ ﻩCreateBiTree(T);ﻩ ﻩ ﻩ printf("\n按层遍历输出:");ﻩﻩﻩ Levelorder(T);ﻩﻩﻩﻩprintf("\n");ﻩﻩﻩﻩbreak;ﻩ default:return; }}函数间调用关系mainmainInOrderTraverse_reCreateBitreePreOrderTraverse_reInOrderTraversePreOrderTraverseInOrderThreadingInOrderTraverse_ThrThreadingStack操作调试分析1、二叉树的分层遍历,开始时想用队列来做,但考虑到比较麻烦,因而改为数组模拟队列,简朴易懂,课后可自行尝试用队列来做。2.
在线索化二叉树时考虑到假如将两种存储结构分开将导致两个类型的指针不能互相传值,导致许多麻烦。比较两种存储结构发现,线索二叉树比二叉树多了两个标志域LTag,Rtag。于是把两种存储结构合并为BiThrNode,并在建立二叉树时把LTag,Rtag均置为Link。程序正常运营。3.进入演示程序BiTree.cpp,完毕编译,连接(即按下CtrlF5)进入演示界面,或直接打开执行文献BiTree.exe,产生如下图所示的界面:用户需根据用户提醒信息操作,输入二叉树(以空格表达空结点),输入完毕后按回车键,屏幕上打印出相应于该二叉树的各种遍历结果。如下图:测试结果输入:-+a*b-cd-ef屏幕输出:中序递归遍历输出:a+b*c-d前序递归遍历输出:+a*b-cd中序非递归遍历输出:a+b*c-d前序非递归遍历输出:+a*b-cd按层遍历输出:+a*b-cd中序遍历线索化二叉树:a+b*c-d附录BiTree.cppBiTree.exe#include<stdio.h>#include<stdlib.h>#defineQElemTypeBiTNode#defineTElemTypechar#defineOK1#defineOVERFLOW0#defineERROR0#defineSTACK_INIT_SIZE100#defineSTACKINCREMENT10typedefenumPointerTag{Link,Thread};ﻩ//Link==0,指针,Thread==1,线索typedefstructBiTNode{ TElemTypedata; structBiTNode*lchild,*rchild;ﻩPointerTagLTag,RTag;}BiTNode,*BiTree,BiThrNode,*BiThrTree; //二叉树#defineQElemTypeBiTNode#defineSElemTypeBiTreetypedefstruct{ SElemType*base;ﻩSElemType*top; intstacksize;}SqStack;//全局变量SqStackS;BiThrTreepre;BiThrTreei;/*函数声明*/intCreateBiTree(BiTree&T);ﻩ ﻩ ﻩ//创建二叉树voidPreOrderTraverse_re(BiTreeT,void(*print)(TElemTypee)); //先序递归遍历二叉树voidInOrderTraverse(BiTreeT,int(*print)(TElemTypee)); ﻩ//中序非递归遍历二叉树voidInOrderTraverse_re(BiTreeT,int(*print)(TElemTypee)); //中序递归遍历二叉树voidPreOrderTraverse(BiTreeT,int(*print)(TElemTypee));ﻩ //先序非递归遍历二叉树intprint(TElemTypee); ﻩ//打印元素voidInitStack(SqStack&S);ﻩ ﻩﻩ//栈的初始化voidPop(SqStack&S,SElemType&e);voidPush(SqStack&S,SElemType&e);intStackEmpty(SqStackS);intGetTop(SqStackS,SElemType&e);voidLevelorder(BiTreeT);voidInOrderThreading(BiThrTree&Thrt,BiThrTreeT);intInOrderTraverse_Thr(BiThrTreeT,int(*print)(TElemTypee));voidInThreading(BiThrTreep);/*二叉树的创建递归创建*/intCreateBiTree(BiTree&T){ﻩcharch; scanf("%c",&ch);ﻩif(ch=='')ﻩ T=NULL;ﻩelse {ﻩ if(!(T=(BiTNode*)malloc(sizeof(BiTNode)))) ﻩreturnERROR;ﻩ T->data=ch;ﻩ if(CreateBiTree(T->lchild))T->LTag=Link;ﻩﻩif(CreateBiTree(T->rchild))T->RTag=Link; }ﻩreturnOK;}/*******************************************//*先序递归遍历输出*//*******************************************/voidPreOrderTraverse_re(BiTreeT,int(*print)(TElemTypee)){ if(T) { ﻩif(print(T->data))ﻩ ﻩPreOrderTraverse_re(T->lchild,print);ﻩ PreOrderTraverse_re(T->rchild,print);ﻩﻩreturn; }ﻩelse return;}/*******************************************//*中序非递归遍历输出*//*******************************************/voidInOrderTraverse(BiTreeT,int(*print)(TElemTypee)){ SqStackS; S.base=NULL;S.top=NULL;ﻩSElemTypep=NULL;ﻩInitStack(S);ﻩPush(S,T); while(!StackEmpty(S))ﻩ{ﻩﻩwhile(GetTop(S,p)&&p) ﻩ Push(S,p->lchild);ﻩﻩPop(S,p); if(!StackEmpty(S))ﻩ { ﻩ Pop(S,p);ﻩ print(p->data); ﻩ Push(S,p->rchild); } }ﻩreturn;}/*******************************************//*中序递归遍历输出*//*******************************************/voidInOrderTraverse_re(BiTreeT,int(*print)(TElemTypee)){if(T){InOrderTraverse_re(T->lchild,print);print(T->data);InOrderTraverse_re(T->rchild,print);}return;}/*******************************************//*按照前序非递归遍历二叉树:栈*//*******************************************/voidPreOrderTraverse(BiTreeT,int(*print)(TElemTypee)){ﻩSqStackS;ﻩS.base=NULL;S.top=NULL; SElemTypep=T;//p指向当前访问的结点InitStack(S);while(p||!StackEmpty(S)){if(p){print(p->data);Push(S,p);p=p->lchild;}else{Pop(S,p);p=p->rchild;}}return;}voidInOrderThreading(BiThrTree&Thrt,BiThrTreeT)//中序遍历二叉树T,并将其中序线索化,Thrt指向头结点{ Thrt=(BiThrTree)malloc(sizeof(BiThrNode));ﻩThrt->LTag=Link;//建头结点ﻩThrt->RTag=Thread; Thrt->rchild=Thrt;//右指针回指 if(!T) Thrt->lchild=Thrt; elseﻩ{ﻩﻩThrt->lchild=T;ﻩ pre=Thrt;ﻩﻩInThreading(T);//中序遍历进行中序线索化 ﻩpre->rchild=Thrt; pre->RTag=Thread;//最后一个结点线索化 ﻩThrt->rchild=pre; } i=Thrt;}//InOrderThreadingvoidInThreading(BiThrTreep){if(p){InThreading(p->lchild);//左子树线索化if(!p->lchild)//建前驱线索{p->LTag=Thread;p->lchild=pre;}if(!pre->rchild)//建后继线索{pre->RTag=Thread;pre->rchild=p;}pre=p;//保持pre指向p的前驱InThreading(p->rchild);//右子树线索化}}//InThreadingintInOrderTraverse_Thr(BiThrTreeT,int(*print)(TElemTypee))//中序遍历线索化后的二叉树{ﻩBiThrTreep=NULL;ﻩp=T->lchild; while(p!=T) { while(p->LTag==Link)ﻩ ﻩp=p->lchild;ﻩ if(!print(p->data)) ﻩreturnERROR; while(p->RTag==Thread&&p->rchild!=T)ﻩ {ﻩﻩ p=p->rchild; ﻩ print(p->data);ﻩ } ﻩp=p->rchild;ﻩ} returnOK;}/***************************以下为辅助函数***************************************/intprint(TElemTypee){ﻩprintf("%c",e); returnOK;}/*栈函数*//*栈的初始化*/voidInitStack(SqStack&S){ﻩS.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));ﻩS.top=S.base; ﻩ//初始为空 S.stacksize=STACK_INIT_SIZE; return;}/*栈顶插入元素*/voidPush(SqStack&S,SElemType&e){ if(S.top-S.base>=S.stacksize)ﻩ{ ﻩS.base=(SElemType*)realloc(S.base,(STACK_INIT_SIZE+STACKINCREMENT)*sizeof(SElemType));ﻩ S.top=S.base+S.stacksize;ﻩﻩS.stacksize+=STACKINCREMENT;ﻩ}ﻩ*S.top++=e;}/*栈顶删除元素*/voidPop(SqStack&S,SElemType&e){ﻩif(S.top==S.base) return; e=*--S.top;ﻩreturn;}intStackEmpty(SqStackS)ﻩ ﻩ/*若栈为空栈,则返回OK,否则返回ERROR*/{ if(S.top==S.base) ﻩreturnOK;ﻩelseﻩ returnERROR;}intGetTop(SqStackS,SElemType&e){ if(S.top==S.base)ﻩﻩreturnERROR;ﻩe=*(S.top-1); returnOK;}/************************************************************//*按层次顺序建立一棵二叉树*//************************************************************/voidLevelorder(BiTreeT){inti,j;BiTNode*q[20],*p;/*q[20]用于模拟队列,存储入队的结点*/p=T;if(p!=NULL){i=1;q[i]=p;j=2;}/*i为队首位置,j为队尾位置*/while(i!=j){p=q[i];printf("%c",p->data);/*访问队首元素*/if(p->lchild!=NULL){q[j]=p->lchild;j++;}/*若队首元素左链域不为空,则将其入队列*/if(p->rchild!=NULL){q[j]=p->rchild;j++;}/*若队首元素右链域不为空,则将其入队列*/i++;/*将队首移到下一个位置*/}}voidmain(){ intflag; BiTreeT; BiThrTreeThrt; printf("**********************************************************\n");ﻩprintf("**实验12二叉树的遍历**\n");ﻩprintf("**1.实现二叉树的不同遍历算法和二叉树的中序线索化算法**\n");ﻩprintf("**a)中序递归遍历算法;**\n"); printf("**b)先序递归遍历算法;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年全球及中国动态图像分析仪行业头部企业市场占有率及排名调研报告
- 2025年全球及中国自动粉末喷涂系统行业头部企业市场占有率及排名调研报告
- 2025-2030全球可生物降解微胶囊解决方案行业调研及趋势分析报告
- 2025-2030全球生物分析测试行业调研及趋势分析报告
- 2025年全球及中国高压清洗机喷枪行业头部企业市场占有率及排名调研报告
- 幼儿园科学讨论活动概述模块二幼儿园科学探究活动讲解
- 必杀08 第九、十单元 西半球的国家和极地地区(综合题20题)(解析版)
- 猜想02 重难点(70道题25个重难点)【考题猜想】(解析版)
- 2025我国合同法对合同效力的规定
- 合法的房屋租赁合同
- 化学元素周期表注音版
- T-GDASE 0042-2024 固定式液压升降装置安全技术规范
- 消防维保服务方案及实施细则
- 保卫管理员培训课件
- 香港朗文4B单词及句子
- 数据中心运维方案
- 运动技能学习与控制课件第五章运动中的中枢控制
- 财务部规范化管理 流程图
- 苏教版2023年小学四年级数学下册教学计划+教学进度表
- 断绝关系协议书范文参考(5篇)
- 最新变态心理学课件
评论
0/150
提交评论