数据结构书本习题答案(续).doc_第1页
数据结构书本习题答案(续).doc_第2页
数据结构书本习题答案(续).doc_第3页
数据结构书本习题答案(续).doc_第4页
数据结构书本习题答案(续).doc_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

7.5 对n个顶点的无向图和有向图,采用邻接矩阵和邻接表表示时,如何判别下列有关问题? (1) 图中有多少条边? (2)任意两个顶点i和j是否有边相连? (3) 任意一个顶点的度是多少?答:对于n个顶点的无向图和有向图,用邻接矩阵表示时: (1)设m为矩阵中非零元素的个数无向图的边数=m/2有向图的边数=m(2)无论是有向图还是无向图,在矩阵中第i行,第j列的元素若为非零值,则该两顶点有边相连。(3)对于无向图,任一顶点i的度为第i行中非零元素的个数。对于有向图,任一顶点i的入度为第i列中非零元素的个数,出度为第i行中非零元素的个数,度为入度出度之和。当用邻接表表示时:(1)对于无向图,图中的边数=边表中结点总数的一半。对于有向图,图中的边数=边表中结点总数。(2)对于无向图,任意两顶点间是否有边相连,可看其中一个顶点的邻接表,若表中的adjvex域有另一顶点位置的结点,则表示有边相连。对于有向图,则表示有出边相连。(3)对于无向图,任意一个顶点的度则由该顶点的边表中结点的个数来决定。对于有向图,任意一个顶点的出度由该顶点的边表中结点的个数来决定,入度则需遍历各顶点的边表。(用逆邻接表可容易地得到其入度。)7.6 n个顶点的连通图至少有几条边?强连通图呢?答:n个顶点的连通图至少有n-1条边,强连通图至少有2(n-1)条边。7.7 DFS和BFS遍历各采用什么样的数据结构来暂存顶点?当要求连通图的生成树的高度最小,应采用何种遍历?答: DFS遍历采用栈来暂存顶点。BFS采用队列来暂存顶点。当要求连通图的生成树的高度最小时,应采用BFS遍历。787.9 按顺序输入顶点对:(1,2),(1,6),(2,6),(1,4),(6,4),(1,3),(3,4),(6,5),(4,5),(1,5),(3,5),根据第7.2.2节中算法CreatALGraph画出相应的邻接表。并写出在该邻接表上,从顶点4开始搜索所得的DFS和BFS序列,及DFS和BFS生成树。答:相应的邻接表如下: 11 5 3 4 6 2 22 6 1 33 5 4 1 44 5 36 1 55 3 1 4 6 66 5 4 2 1 根据上面的邻接表画出的图见下图: 从顶点4开始搜索所得的DFS序列是:453162 从顶点4开始搜索所得的BFS序列是:453612 相应的生成树见上图。7.10 什么样的图其最小生成树是唯一的?用PRIM 和Kruskal求最小生成树的时间各为多少?它们分别适合于哪类图?答:当候选轻边集中的轻边数始终等于1条时,其最小生成树是唯一的。用Prim和Kruskal求最小生成树的时间复杂度分别为O(n2)和O(elge),前者适合于稠密图,后者适合于稀疏图.7.11 对图7.26(下图)所示的连通图,请分别用Prim和Kruskal算法构造其最小生成树。答:7.13 试写出图7.28(下图)所示有向图的所有拓扑序列,并指出就用7.6节给出的NonPreFirstTopSort算法求得的是哪个序列,设邻接表的边表结点中的邻接点序号是递增有序的。 答:上图中所有拓扑序列如下: v0v1v5v2v3v6v4 * v0v1v5v2v6v3v4 v0v1v5v6v2v3v4 v1v0v5v6v2v3v4 v1v0v5v2v3v6v4 v1v0v5v2v6v3v4 v1v5v0v2v3v6v4 v1v5v0v2v6v3v4 v1v5v0v6v2v3v4 v5v1v0v2v3v6v4 v5v1v0v2v6v3v4 v5v1v0v6v2v3v4 v5v0v1v2v3v6v4 v5v0v1v2v6v3v4 v5v0v1v6v2v3v4 v0v5v6v1v2v3v4 v1v5v6v0v2v3v4 v5v6v1v0v2v3v4 v5v6v0v1v2v3v4 v5v0v6v1v2v3v4 v5v1v6v0v2v3v4 用NonPreFirstTopSort算法求得的是v0v1v5v2v3v6v4也就是上面带*号的那个。7.14 什么样的DAG的拓扑序列是唯一的?答:确定了排序的源点,DAG图中无前趋顶点只有一个且从该点到终点只有一条路径时,它的拓扑序列才是唯一的。7.15 请以V0为源点,给出用DFS搜索图7.28(下图)得到的逆拓扑序列。 答:逆拓扑序列是:V4 V2 V1 V0 V1 V6 V57.16 试在无向图的邻接矩阵和邻接链表上实现如下算法:(1)往图中插入一个顶点(2)往图中插入一条边(3)删去图中某顶点(4)删去图中某条边解:(一)用邻接矩阵表示#define MaxVertexNum l00 /最大顶点数,应由用户定义typedef char VertexType; /顶点类型应由用户定义typedef int EdgeType; /边上的权值类型应由用户定义typedef structVextexType vexsMaxVertexNum /顶点表EdeType edgesMaxVertexNumMaxVertexNum;/邻接矩阵,可看作边表int n,e; /图中当前的顶点数和边数MGragh;(1)往图中插入一个顶点 void AddVertexMGraph(MGraph *G,VertexType x)/往无向图的邻接矩阵中插入顶点if (G-n=MaxVertexNum)Error(顶点数太多);G-vexsG-n=x;/将新顶点输入顶点表G-n+;/顶点数加1(2)往图中插入一条边void AddedgeMGraph(MGraph *G,VertexType x,VertexType y)/往无向图的邻接矩阵中插入边(x,y)int i,j,k;i=-1;j=-1;for(k=0;kn;k+)/查找X,Y的编号 if (g-vexsk=x) i=k;if (g-vexsk=y) j=k;if (i=-1|j=-1) Error(结点不存在);else /插入边(x,y)g-vexij=1;g-vexji=1;G-e+;/边数加1(3)删去图中某顶点void DeleteVertexMGraph(MGraph *G,VertexType x)/无向图的邻接矩阵中删除顶点xint i,k,j;i=-1;for(k=0;kn;k+)/查找X的编号if (g-vexsk=x) i=k;if (i=-1) Error(结点不存在);else /删除顶点以及边k=0;/求出与x结点相关联的边数kfor (j=0;jn;j+)if (g-vexsij=0) k+;G-e=G-e-k;/设置新的边数for (k=i+1;kn;k+)/在邻接矩阵中删除第i行for(j=0;jn;j+)g-vexsk-1j=g-vexskj;for (k=i+1;kn;k+)/在邻接矩阵中删除第i列for(j=0;jn;j+)g-vexsjk-1=g-vexsjk;G-n-;/总结点数-1 (4)删去图中某条边void DeleteedgeMGraph(MGraph *G,VertexType x,VertexType y)/无向图的邻接矩阵中删除边(x,y)int i,j,k;i=-1;j=-1;for(k=0;kn;k+)/查找X,Y的编号 if (g-vexsk=x) i=k;if (g-vexsk=y) j=k;if (i=-1|j=-1) Error(结点不存在);else if (g-vexsij!=1)/删除边(x,y)g-vexij=0;g-vexji=0;G-e-;/边数加1(二)用邻接表表示 typedef struct node/边表结点int adjvex; /邻接点域struct node *next; /链域/若要表示边上的权,则应增加一个数据域EdgeNode;typedef struct vnode /顶点表结点 VertexType vertex; /顶点域EdgeNode *firstedge;/边表头指针 VertexNode;typedef VertexNode AdjListMaxVertexNum;/AdjList是邻接表类型typedef struct AdjList adjlist;/邻接表 int n,e; 图中当前顶点数和边数 ALGraph; /对于简单的应用,无须定义此类型,可直接使用AdjList类型。 (1)往图中插入一个顶点void AddVertexALGraPh(ALGrahp *G,VertexType x)/往无向图的邻接表表示中插入一个顶点if (G-n=MaxVertexNum)Error(顶点数太多);G-adjlistG-n.vertex=x;/将新顶点输入顶点表G-adjlistG-n.firstedge=NULL;/边表置为空表G-n+;/顶点数加1(2)往图中插入一条边void AddedgeALGraPh(ALGrahp *G,VertexType x,VertexType y)/往无向图的邻接表中插入边(x,y)int i,j,k;EdgeNode *s;i=-1;j=-1;for(k=0;kn;k+)/查找X,Y的编号 if (G-adjlistk.vertex=x) i=k;if (G-adjlistk.vertex=y) j=k;if (i=-1|j=-1) Error(结点不存在);else s=G-adjlisti.firstedge;while (s)&(s-adjvex!=j)/查看邻接表中有无(x,y)s=s-next;if (!s)/当邻接表中无边(x,y),插入边(x,y) s=(EdgeNode *)malloc(sizeof(EdgeNode); /生成边表结点s-adjvex=j; /邻接点序号为js-next=G-adjlisti.firstedge;G-adjlisti.firstedge=s;/将新结点*s插入顶点x的边表头部s=(EdgeNode *)malloc(sizeof(EdgeNode);s-adjvex=i; /邻接点序号为is-next=G-adjlistj.firstedge;G-adjlistj.firstedge=s; /将新结点*s插入顶点x的边表头部G-e+;/边数加1 (3)删去图中某顶点void DeleteVertexALGraPh(ALGrahp *G,VertexType x)/无向图的邻接表中删除顶点xint i,k,j;EdgeNode *s,*p,*q;i=-1;for(k=0;kn;k+)/查找X的编号if (G-adjlistk.vertex=x) i=k;if (i=-1) Error(结点不存在);else /删除与x相关联的边s=G-adjlisti.firstedge;while (s)p=G-adjlists-adjvex.firstedge;/删除与i相关联的其他结点边表中表结点if (p)&(p-adjvex=i)/是第一个边表结点,修改头指针G-adjlists-adjvex.firstedge=p-next;free(p);else/不是第一个 边表结点,查找并删除while (p)&(p-next)&(p-next-adjvex=i)p=p-next;q=p-next;p-next=q-next;free(q);q=s;s=s-next;free(q);/在i结点的边表中删除表结点G-e-; /调整顶点表for (j=i;jn-1;j+)G-adjlistj.firstedge=G-adjlistj+1.firstedge;G-adjlistj.vertex=G-adjlistj+1.vertex;G-n-; (4)删去图中某条边void DeleteedgeALGraPh(ALGraph *G,VertexType x,VertexType y)/往无向图的邻接表中删除边(x,y)int i,j,k;EdgeNode *s,*p;i=-1;j=-1;for(k=0;kn;k+)/查找X,Y的编号 if (G-adjlistk.vertex=x) i=k;if (G-adjlistk.vertex=y) j=k;if (i=-1|j=-1) Error(结点不存在);else s=G-adjlisti.firstedge;/在i的边表中删除值为j的边表结点if (s)&(s-adjvex=j) G-adjlisti.firstedge=s-next;free(s); elsewhile (s)&(s-next)&(s-next-adjvex!=j)s=s-next;if (!s-next) Error(无此边);else p=s-next;s=p-next;free(p);s=G-adjlistj.firstedge;/在j的边表中删除值为i的边表结点if (s)&(s-adjvex=i) G-adjlistj.firstedge=s-next;free(s); elsewhile (s)&(s-next)&(s-next-adjvex!=j)s=s-next;p=s-next;s=p-next;free(p);G-e-; 7.17 下面的伪代码是一个广度优先搜索算法,试以图7.29(下图)中的v0为源点执行该算法,请回答下述问题:(1)对图中顶点vn+1,它需入队多少次?它被重复访问多少次?(2)若要避免重复访问同一个顶点的错误,应如何修改此算法?void BFS(ALGraph *G,int k)/以下省略局部变量的说明,visited各分量初值为假InitQueue(&Q);/置空队列EnQueue(&Q,k);/k入队while(!QueueEmpty(&Q)i=DeQueue(&Q);/vi出队visitedi=TRUE;/置访问标记printf(%c,G-adjlisti.vertex;/访问vifor(p=G-adjlisti.firstedge;p;p=p-next)/依次搜索vi的邻接点vj(不妨设p-adjvex=j)if(!visitedp-adjvex)/若vj没有访问过EnQueue(&Q,p-adjvex);/vj入队/endofwhile/BFS答:(1)对图中顶点vn+1,它需入队n次,它被重复访问n次。(2)若要避免重复访问同一个顶点的错误,应作如下修改:void BFS(ALGraph *G,int k)/以下省略局部变量的说明,visited各分量初值为假InitQueue(&Q);/置空队列EnQueue(&Q,k);/k入队visitedi=TRUE;/置访问标记printf(%c,G-adjlisti.vertex;/访问viwhile(!QueueEmpty(&Q)i=DeQueue(&Q);/vi出队for(p=G-adjlisti.firstedge;p;p=p-next)/依次搜索并访问vi的未访问邻接点vj(不妨设p-adjvex=j)if(!visitedp-adjvex)/若vj没有访问过printf(%c,G-adjlisti.vertex;/访问vjEnQueue(&Q,p-adjvex);/vj入队/endofwhile/BFS7.18 试以邻接表和邻接矩阵为存储结构,分别写出基于DFS和BFS遍历的算法来判别顶点vi和vj(ij)之间是否有路径。答:(1)基于采用邻接矩阵的DFSint pathDFSM(MGraph *G,int i,int j) /以邻接矩阵为存储结构,判断vi和vj之间是否有路径,若有返回1,否则返回0int k;visitedi=TRUE;for(k=0;kn;k+) /依次搜索vi的邻接点if(G-edgesik=1&!visitedk)if (k=j) return 1;/有路径相通else return(pathDFSM(G,k,j);return 0;/无路径相通/DFSM(2)基于采用邻接表的DFS int PATHDFS(ALGraph *G,int i,int j) /以邻接表为存储结构,判断vi和vj之间是否有路径,若有返回1,否则返回0EdgeNode *p;visitedi=TRUE; /标记vi已访问p=G-adjlisti.firstedge; /取vi边表的头指针while(p)/依次搜索vi的邻接点vk,这里k=p-adjvexif (!visitedp-adjvex)/若vk尚未被访问if (p-adjvex=j)return 1;else ruturn PATHDFS(g,p-adjvex,j);/则以Vk为出发点向纵深搜索p=p-next; /找vi的下一邻接点return 0;/PATHDFS(3)基于邻接矩阵的BFS算法int pathBFSM(MGraph *G,int i,int j)/以邻接矩阵为存储结构,判断vi和vj之间是否有路径,若有返回1,否则返回0int k;CirQueue Q; initQueue(&Q);visitedi=TRUE;EnQueue(&Q,i);while(!QueueEmpty(&Q)i=DeQueue(&Q); /vi出队for(k=0;kn;k+)/依次搜索vi的邻接点vkif(G-edgesik=1&!visitedk)/vk未访问if (k=j) return 1;visitedk=TRUE;EnQueue(&Q,k);/访问过的vk人队/endwhilereturn 0;/pathBFSM(4)基于邻接表为存储结构的BFS算法int BFS(ALGraph *G,int i,int j)/以邻接表为存储结构,判断vi和vj之间是否有路径,若有返回1,否则返回0int i;CirQueue Q; /须将队列定义中DataType改为intEdgeNode *p;InitQueue(&Q);/队列初始化visitedi=TRUE; EnQueue(&Q,i);/vi已访问,将其人队。(实际上是将其序号人队)while(!QueueEmpty(&Q)/队非空则执行i=DeQueue(&Q); /相当于vi出队p=G-adjlisti.firstedge; /取vi的边表头指针 while(p)/依次搜索vi的邻接点vk(令p-adjvex=k)if(!visitedp-adjvex) /若vk未访问过if (p-adjvex=j)return 1;elsevisitedP-adjvex=TRUE; EnQueue(&Q,p-adjvex);/访问过的vk人队 p=p-next;/找vi的下一邻接点 /endwhile /endwhile return 0; /end of pathBFS7.19 试分别写出求DFS和BFS生成树(或生成森林)的算法,要求打印出所有的树边。答:(1)求DFS生成树typedef enumFALSE,TRUEBoolean;/FALSE为0,TRUE为1Boolean visitedMaxVertexNum; /访问标志向量是全局量void DFSTraverseTREE(ALGraph *G) /求深度优先生成树(以邻接表表示的图G),而以邻接矩阵表示G时,/算法完全与此相同,只要将DFSTree(G,i)改为DFSMTree(G,i)即可int i;for(i=0;in;i+)visitedi=FALSE; /标志向量初始化for(i=0;in;i+)if(!visitedi) /vi未访问过DFSTree(G,i); /以vi为源点开始DFS搜索,求DFS生成树的边/DFSTraversevoid DFSTree(ALGraph *G,int i) /以vi为出发点对邻接表表示的图G进行深度优先搜索,打印生成树(生成森林)的边EdgeNode *p;visitedi=TRUE; /标记vi已访问p=G-adjlisti.firstedge; /取vi边表的头指针while(p)/依次搜索vi的邻接点vj,这里j=p-adjvexif (!visitedp-adjvex)/若vj尚未被访问printf(%c,%c)n,G-adjlisti.vertex,G-adjlistp-adjvex.vertex) ;/ 打印边DFSTree(g,p-adjvex);/则以Vj为出发点向纵深搜索p=p-next; /找vi的下一邻接点/DFSvoid DFSMTree(MGraph *G,int i) /以vi为出发点对邻接矩阵表示的图G进行深度优先搜索,打印生成树(生成森林)的边int j;visitedi=TRUE;for(j=0;jn;j+) /依次搜索vi的邻接点if(G-edgesij=1&!visitedj)printf(%c,%c)n,G-vexsi,G-vexsj);/ 打印边DFSMTree(G,j);/(vi,vj)E,且vj未访问过,故vj为新出发点/DFSMTree(2)求BFS生成树typedef enumFALSE,TRUEBoolean;/FALSE为0,TRUE为1Boolean visitedMaxVertexNum; /访问标志向量是全局量void BFSTraverseTREE(ALGraph *G) /求广度优先生成树(以邻接表表示的图G),而以邻接矩阵表示G时,/算法完全与此相同,只要将BFSTree(G,i)改为BFSMTree(G,i)即可 int i; for(i=0;in;i+) visitedi=FALSE; /标志向量初始化 for(i=0;in;i+)if(!visitedi) /vi未访问过BFSTree(G,i); /以vi为源点开始BFS搜索,求BFS生成树的边/BFSTraversevoid BFSTree(ALGraph*G,int k)/ 以vk为源点对用邻接表表示的图G进行广度优先搜索,并求出BFS生成树边int i;CirQueue Q; /须将队列定义中DataType改为intEdgeNode *p;InitQueue(&Q);/队列初始化visitedk=TRUE; EnQueue(&Q,k);/vk已访问,将其人队。(实际上是将其序号人队)while(!QueueEmpty(&Q)/队非空则执行i=DeQueue(&Q); /相当于vi出队p=G-adjlisti.firstedge; /取vi的边表头指针while(p)/依次搜索vi的邻接点vj(令p-adjvex=j)if(!visitedp-adivex) /若vj未访问过printf(%c,%c)n,G-adjlisti.vertex,G-adjlistp-adjvex.vertex);/打印边visitedP-adjvex=TRUE; EnQueue(&Q,p-adjvex);访问过的vj人队/endifp=p-next;/找vi的下一邻接点/endwhile/endwhile/end of BFSTree void BFSMTree(MGraph *G,int k)/ 以vk为源点对用邻接矩阵表示的图G进行广度优先搜索,并求出BFS生成树边int i,j;CirQueue Q; InitQueue(&Q);visitedk=TRUE;EnQueue(&Q,k);while(!QueueEmpty(&Q)i=DeQueue(&Q); /vi出队for(j=0;jn;j+)/依次搜索vi的邻接点vjif(G-edgesij=1&!visitedj)/vi未访问printf(%c,%c)n,G-vexsi,G-vexsj);/打印边visitedj=TRUE;EnQueue(&Q,j);/访问过的vj人队/endwhile/BFSMTree7.20 写一算法求连通分量的个数并输出各连通分量的顶点集。答:typedef enumFALSE,TRUEBoolean;/FALSE为0,TRUE为1Boolean visitedMaxVertexNum; /访问标志向量是全局量void DFSTraverse(ALGraph *G) /深度优先遍历以邻接表表示的图G,求连通分量的个数和各连通分量的顶点集int i;for(i=0;in;i+)visitedi=FALSE; /标志向量初始化j=0;/连通分量个数计数器for(i=0;in;i+)if(!visitedi) /vi未访问过j+;printf(connected component %d:,j);DFS(G,i); /以vi为源点开始DFS搜索printf(n);/DFSTraversevoid DFS(ALGraph *G,int i) /以vi为出发点对邻接表表示的图G进行深度优先搜索EdgeNode *p;printf(c,,G-adjlisti.vertex);/访问顶点vivisitedi=TRUE; /标记vi已访问p=G-adjlisti.firstedge; /取vi边表的头指针while(p)/依次搜索vi的邻接点vj,这里j=p-adjvexif (!visitedp-adjvex)/若vi尚未被访问DFS(g,p-adjvex);/则以Vj为出发点向纵深搜索p=p-next; /找vi的下一邻接点/DFS7.21 设图中各边的权值都相等,试以邻接矩阵和邻接表为存储结构,分别写出算法:(1)求顶点vi到顶点vj(ij)的最短路径(2)求源点vi到其余各顶点的最短路径要求输出路径上的所有顶点(提示:利用BFS遍历的思想)答(1)求顶点vi到顶点vj(ij)的最短路径int shortestpath(ALGraph*G,int i,int j)/ 对邻接表表示的图G,求顶点vi到顶点vj(ij)的最短路径int distMaxVertexNum;CirQueue Q; /须将队列定义中DataType改为intEdgeNode *p;int k;for(k=0;kn;k+)distk=0; /距离向量初始化InitQueue(&Q);/队列初始化visitedi=TRUE; EnQueue(&Q,i);while(!QueueEmpty(&Q)/队非空则执行i=DeQueue(&Q); /相当于vi出队p=G-adjlisti.firstedge; /取vi的边表头指针while(p)/依次搜索vi的邻接点vk(令p-adjvex=k)if(!visitedp-adjvex) /若vj未访问过distp-adjvex+;if (p-adjvex=j) return distp-adjvex;visitedP-adjvex=TRUE; EnQueue(&Q,p-adjvex);访问过的vk人队/endifp=p-next;/找vi的下一邻接点/endwhile/endwhile/end of shortestpathint BFSM(MGraph *G,int i,int j)/ 对邻接链表表示的图G,求顶点vi到顶点vj(ij)的最短路径int distMaxVertexNum,k;CirQueue Q; initQueue(&Q);for(k=0;kn;k+)disti=0; /距离向量初始化visitedk=TRUE;EnQueue(&Q,i);while(!QueueEmpty(&Q)i=DeQueue(&Q); /vi出队for(k=0;kn;k+)/依次搜索vi的邻接点vkif(G-edgesik=1&!visitedk)/vk未访问distk+;if (k=j) return distj;visitedk=TRUE;EnQueue(&Q,k);/访问过的vk人队/endwhile/BFSM(2)求源点vi到其余各顶点的最短路径void shortestpath(ALGraph*G,int i)/ 对邻接表表示的图G,求顶点vi到顶点vj(ij)的最短路径int distMaxVertexNum;int preMaxVertexNum;/prek中存放vi到vk路径中,vk的前趋的序号CirQueue Q; /须将队列定义中DataType改为intEdgeNode *p;int k,j;for(k=0;kn;k+)distk=0; /距离向量初始化prek=k;InitQueue(&Q);/队列初始化visitedi=TRUE; EnQueue(&Q,i);while(!QueueEmpty(&Q)/队非空则执行i=DeQueue(&Q); /相当于vi出队p=G-adjlisti.firstedge; /取vi的边表头指针while(p)/依次搜索vi的邻接点vk(令p-adjvex=k)if(!visitedp-adjvex) /若vj未访问过distp-adjvex+;prep-adjvex=i;visitedP-adjvex=TRUE; EnQueue(&Q,p-adjvex);访问过的vk人队/endifp=p-next;/找vi的下一邻接点/endwhile/endwhilefor(k=0;kn;k+)/ 打印各顶点的最短路径和长度printf(path of %c is %d:,G-adjlistk.vertex,distk); j=k; printf(%c,G-adjlistk.vertex); doj=prej;print(adjlistj.vertex);while (j!=i);printf(n);/end of shortestpat

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论