欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    机械CAD中常用的数据结构.ppt

    • 资源ID:5990900       资源大小:1.40MB        全文页数:77页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    机械CAD中常用的数据结构.ppt

    第1篇 CAD基础,4 机械CAD中常用的数据结构,本章目标掌握机械CAD中常用的数据结构,本章学习要点线性表的存储结构以及对线性表的建立、访问、修改、删除和插入的运算栈的存储结构以及对栈的建立、进栈和出栈的运算树的存储结构二叉树的存储结构以及对二叉树的遍历运算,4 机械CAD中常用的数据结构,数据 是对客观事物的符号表示,是指所有能输入计算机内并被计算机处理的符号的总称。,4.1 基本概念,数值、字符是数据,图形、图像也是数据。,数据元素 是数据的基本单位,是数据这个集合中相对独立的个体。,零件可以作为产品或部件的数据元素,圆柱体、长方体可以作为零件形体的数据元素,直线、圆弧可以作为图形的数据元素。,4.1 基本概念,数据的逻辑结构 是只考虑数据之间的逻辑关系,独立于数据的存储介质。通常所说的数据结构就是指数据的逻辑结构。,4.1 基本概念,数据的逻辑结构 是只考虑数据之间的逻辑关系,独立于数据的存储介质。通常所说的数据结构就是指数据的逻辑结构。,4.1 基本概念,数据的物理结构 也称为数据的存储结构,是数据元素和它们之间的关系在计算机中的表示。,4.1 基本概念,结点,用一个位串表示一个数据元素,称这样的位串为一个,结 点,结点是数据元素在计算机中的映像,4.1 基本概念,机械CAD中常用的数据结构,线性表,栈,树,二叉树,线性表是一种最常用且最简单的数据结构,是n个数据元素的有限序列(a1、a2、an)。,数据元素ai可以是一个数、一个符号,也可以是一个线性表,甚至是更复杂的数据结构。,4.2 线性表,例如:六角头螺栓(GB/T 5780-2000)的螺纹规格 d 可以构成一个简单的线性表(3,4,5,6,8,10,12,16,20,24,30,36,42),4.2 线性表,例如:减速箱明细表,表中的数据元素是由序号、名称、数量和材料4个简单数据组成的一个记录。,减速箱明细表,4.2 线性表,从上面两个实例中可以看出,尽管线性表中的数据元素可能是各种各样的,但同一表中数据元素的类型必须是相同的。,4.2 线性表,除了第一个和最后一个数据元素外,每个数据元素有且只有一个直接前趋,有且只有一个直接后继。,4.2 线性表,4.2.1 线性表的顺序存储结构,用一组连续的存储单元按线性表数据元素的逻辑结构依次存放表中所有数据元素。,4.2 线性表,特点:,(1)有序性:各数据元素之间的存储顺序与逻辑顺序一致,(2)均匀性:每个数据元素所占存储空间的长度相等,4.2.1 线性表的顺序存储结构,4.2 线性表,操作:,建表,访问,修改,删除,插入,4.2.1 线性表的顺序存储结构,4.2 线性表,操作:,static char listc=A,B,C,D,E;,线性表listc有5个数据(A,B,C,D,E),用C语言编写程序实现此类操作,建表,访问,修改,删除,插入,6,4.2.1 线性表的顺序存储结构,4.2 线性表,操作:,char c;c=listc2;,线性表listc有5个数据(A,B,C,D,E),用C语言编写程序实现此类操作,建表,访问,修改,删除,插入,4.2.1 线性表的顺序存储结构,4.2 线性表,操作:,Listc2=T;,线性表listc有5个数据(A,B,C,D,E),用C语言编写程序实现此类操作,建表,访问,修改,删除,插入,4.2.1 线性表的顺序存储结构,4.2 线性表,操作:,线性表listc有5个数据(A,B,C,D,E),用C语言编写程序实现此类操作,建表,访问,修改,删除,插入,4.2.1 线性表的顺序存储结构,4.2 线性表,从线性表中删除一个数据元素后还必须保持这个线性表的均匀性和有序性,因此被删除元素之后的所有元素均应向前移动,移动距离为一个数据元素所占存储空间的长度。,操作:,#define LEN 6main()static char listcLEN=(A,B,C,D,E;int i,j;printf(“删除第几个数据元素?“);scanf(“%d”,线性表listc有5个数据(A,B,C,D,E),用C语言编写程序实现此类操作,建表,访问,修改,删除,插入,4.2.1 线性表的顺序存储结构,4.2 线性表,4.2.1 线性表的顺序存储结构,4.2 线性表,操作:,线性表listc有5个数据(A,B,C,D,E),用C语言编写程序实现此类操作,建表,访问,修改,删除,插入,将一个新的数据元素插入到线性表的第i个位置,即插入第i-1元素和第i个元素之间。为了保证线性表的均匀性,新的数据必须和表内已有元素的类型一致;为了保证线性表的有序性,原线性表第i至最后一个元素要向后移动一个数据元素所占存储空间的长度,4.2.1 线性表的顺序存储结构,4.2 线性表,操作:,#define LEN 6main()static char listcLEN=(A,B,C,D,E;int i,j;char cl;printf(“输入新的数据元素“);c1=getche();printf(“输入新的数据元素的位置“);scanf(“%d”,线性表listc有5个数据(A,B,C,D,E),用C语言编写程序实现此类操作,建表,访问,修改,删除,插入,优缺点:1)线性表在顺序结构中对数据元素的访问(读取)、修改快而方便,但在删除和插入运算时,需要对数据元素作大量的移动。2)由于线性表是一个静态表,只有运行前进行定义,定义完成后,大小不能改变。,4.2.1 线性表的顺序存储结构,4.2 线性表,应用:多用于查找频繁、很少增删的场合,例如工程手册中的数据表。,4.2.1 线性表的顺序存储结构,4.2 线性表,链式存储结构的特点,4.2.2 线性表的链式存储结构,4.2 线性表,单向链表:,单向链表结点的指针域只有一个,通常存放直接后继的地址。,4.2.2 线性表的链式存储结构,4.2 线性表,单向链表:,假定线性表(A,B,C,D,E),将其按单向链表存储,数据操作:访问、修改、删除、插入,4.2.2 线性表的链式存储结构,4.2 线性表,删 除,建 立,访 问,查 找,修 改,首先定义结点的数据类型,它有两个成员:data和next。data用来存放数据元素本身,本例是字符型的;next存放该结点直接后继的地址,所以它必须是指针型的,而且是指向字符型变量的指针。链表不必指出它的长度,而是根据需要动态的申请存储空间。,删 除,建 立,访 问,查 找,修 改,/*定义结点的数据结构*/struct link char data;/*数据域*/structure link*next;/*指向直接后继的指针*/*head;/*链头结点指针,是全局变量*/,删 除,建 立,访 问,查 找,修 改,/*建立一个单向链表*/void create(void)int i,LEN=5;/*链表初始长度为5*/struct link*node,*temp;for(i=0;idata=A+i;node-next=NULL;if(i=0)head=temp=node;else temp-next=node;temp=node;,删 除,访 问,查 找,修 改,链表的逻辑顺序与存储顺序无关,如果访问第i个元素,首先通过链头结点head找到第1个结点的地址,再根据这个结点的指针域找到下一个结点的地址,直至找到第i个结点的地址,再访问这个结点的数据域。,删 除,访 问,查 找,修 改,删 除,访 问,查 找,修 改,/*访问第 i 个数据元素*/char visit(int i)int j=1;struct link*temp;temp=head;while(temp)if(j+=i)return(temp-data);temp=temp-next;printf(“序号超出链表的范围!”);return(0);,删 除,修 改,查 找,在链表中查找是否有指定的数据元素,若有就输出第一次出现这个数据元素的逻辑位置,否则输出没有这个数据元素的信息。,删 除,修 改,查 找,/*查找特定数据元素的结点*/int search(char c)int i=1;struct link*temp;temp=head;while(temp)if(temp-data=c)return(i);i+;temp=temp-next;printf(“没有找到这个数据!”);return(0);,删 除,修 改,查 找,修改第i个数据元素的值时,首先找到这个数据元素的结点。若修改指定数据元素的值,同样先找到这个数据元素的结点,再修改这个结点的数据域即可。,删 除,查 找,若要删除第i个数据元素,需找到第 i-1和第 i 个数据元素的结点,然后将第i-1个结点的指针指向第i+1个结点,再释放第i个结点的存储空间即可。,删 除,查 找,/*删除第 i 个结点*/void delete(int i)int j=1;struct link*node,*temp;node=temp=head;if(i=1)head=temp-next;free(temp);return;,删 除,查 找,while(node)if(+j=i)temp=node-next;if(temp=NULL)pritnf(“序号超出链表的范围”);return;node-next=temp-next;free(temp);return;node=node-next;printf(“序号超出链表的范围”);,查 找,访 问,查 找,删除,在第 i 个数据元素之后插入一个新的数据元素时,首先为该数据元素申请存储空间,得到一个新结点。在新节点的数据域存放数据元素的值,然后找到第i个结点。令结点指针域的指针等于第i个结点指针域的指针,第i个结点的指针域存放新结点的地址即可。,查 找,访 问,查 找,修 改,插入,/*在第 i 个数据元素后插入一个新的数据元素*/void insert(char c,int i)int j=1;struct link*node,*temp;temp=(struct link*)malloc(sizeof(struct link);temp-data=c;if(inext=head;head=temp;elsenode=head;,查 找,访 问,查 找,修 改,插入,while(node-next)if(j+=i)break;node=node-next;if(node!=NULL)temp-next=node-next;node-next=temp;else node=temp;temp-next-NULL;,双向链表:,4.2.2 线性表的链式存储结构,4.2 线性表,数据操作:访问、修改、删除、插入,双向链表:,4.2.2 线性表的链式存储结构,4.2 线性表,循环链表:,4.2.2 线性表的链式存储结构,4.2 线性表,链表与线性表相比,其特点:(1)删除或插入运算,数据元素不需要移动;(2)不需要事先分配存储空间;(3)表的容量根据需要动态申请和动态释放。,4.2.2 线性表的链式存储结构,4.2 线性表,链式存储结构的应用链表较适合用于表容量大小不定、且增删操作频繁的场合。,4.2.2 线性表的链式存储结构,4.2 线性表,1什么是栈,后进先出,4.3 栈,三、栈,2.栈的运算,深度优先搜索问题,4.3 栈,三、栈,3.栈的应用,某齿轮传动箱的传动关系图,其中0号轴为输入轴,6、7、8、9号轴为输出轴,其余各轴为中间传动轴。编写程序,输入指定的轴号,打印从0号轴到指定轴的传动路线。,4.3 栈,#include#include#define MAX 10static int aMAXMAX=0,1,1,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1;main()int i=0,j=0,top=0,n,dir,sMAX;printf(输入轴号(1-%d):,MAX-1);scanf(%d,stop=0;while(top=0|j10)if(aij=1)top+;stop=j;if(j=n)printf(n%d号轴的传动路线是:,n);for(i=0;i=top;i+)printf(-%d-,si);switch(top%2)case 0:printf(n输出轴转动方向与输入轴相同n);break;case 1:printf(n输出轴转动方向与输入轴相反n);break;exit(1);elsei=j;j=0;,else if(j=9)j=stop;top-;i=stop;j+;printf(没有找到%d号轴的传动路线n,n);,四、树,1树的概念 树(tree)是一种重要的非线性的数据结构,主要用来存放非线性的具有分支结构的结点。结点之间有着明显的层次关系。这种结构形式很常见。如书的目录。,4.4 树,四、树,2树的特点 1)根 2)叶子节点(终端结点):度为零的结点称为叶子 结点或终端结点 3)节点的度:一个结点具有的子树数目称为该结点 的度 4)树的度:树内各结点的度的最大值称为树的度,4.4 树,四、树,2树的特点 5)结点的双亲:结点的直接前驱称为该结点的双亲 6)结点的孩子:结点的直接后继称为该结点的孩子 7)兄弟:同一双亲的孩子间称为兄弟 8)树的深度或高度:树中结点的最大层次称为树的深度或高度 9)森林:0个或多个不相交的树的集合称为森林,4.4 树,四、树,2树的特点,如下图所示树:结点A、B、C的度分别为2、3、1;结点D、F、G、H、I均为叶子结点;树的度为3;结点A是结点B、C的双亲;结点B、C是结点A的孩子;B、C是兄弟;根结点为第一层,共有4层,树的高度为4。若去掉结点A就成为森林。,4.4 树,四、树,3树的存储结构 树结构为非线性结构,需采用多重链表存储,即每个结点除了数据域外,还需设有多个链域,分别指向该结点各孩子结点。,4.4 树,五、二叉树,1二叉树的概念:二叉树是一种很重要的树结构。它的特点是每个结点下只有左右两棵子树,且左右子树不能颠倒,否则为另一棵二叉树。,4.5 二叉树,五、二叉树,2二叉树的分类 二叉树有五种基本形态,如图所示,其中(a)空二叉树,(b)只有一个根结点的二叉树,(c)右子树为空的二叉树,(d)左子树为空的二叉树,(e)左右子树均为非空的二叉树。,4.5 二叉树,五、二叉树,3二叉树与一般树的区别在于:1)一般树至少有一结点,而二叉树可以为空。2)一般树的子树不区分左右,而二叉树有左右之分,且不能颠倒。3)一般树的每一个结点可以有任意个子树,而二叉树每一个结点的子树不能超过2个。,4.5 二叉树,五、二叉树,4二叉树的存储结构 如图所示为二叉树的逻辑结构和存储结构。二叉树的每个结点除了数据域info并设立两个链域Lchild、Rchild分别指向该结点的左子树和右子树的根结点。由于二叉树中的每个结点的构造均相同所以给存储和运算带来方便。,4.5 二叉树,五、二叉树,4二叉树的存储结构 如图所示为二叉树的逻辑结构和存储结构。二叉树的每个结点除了数据域info并设立两个链域Lchild、Rchild分别指向该结点的左子树和右子树的根结点。由于二叉树中的每个结点的构造均相同所以给存储和运算带来方便。,(b)逻辑结构,4.5 二叉树,五、二叉树,4二叉树的存储结构 如图所示为二叉树的逻辑结构和存储结构。二叉树的每个结点除了数据域info并设立两个链域Lchild、Rchild分别指向该结点的左子树和右子树的根结点。由于二叉树中的每个结点的构造均相同所以给存储和运算带来方便。,4.5 二叉树,五、二叉树,5二叉树的遍历,4.5 二叉树,遍历定义指按某条搜索路线遍访每个结点且不重复(又称周游)。遍历用途它是树结构插入、删除、修改、查找和排序运算的前提,是二叉树一切运算的基础和核心。遍历方法牢记一种约定,对每个结点的查看都是“先左后右”。,五、二叉树,5二叉树的遍历,4.5 二叉树,遍历规则,二叉树由根、左子树、右子树构成,定义为D、L、RD、L、R的组合定义了六种可能的遍历方案:LDR,LRD,DLR,DRL,RDL,RLD若限定先左后右,则有三种实现方案:DLR LDR LRD先序遍历 中序遍历 后序遍历,五、二叉树,5二叉树的遍历,4.5 二叉树,先序遍历:根左右 结果为:中序遍历:左根右 结果为:后序遍历:左右根 结果为:,A B D E CD B E A CD E B C A,五、二叉树,5二叉树的遍历,4.5 二叉树,A,T,X,B,C,P,Z,Y,先序遍历:,中序遍历:,后序遍历:,ATBZXCYP,TZBACYXP,ZBTYCPXA,五、二叉树,5二叉树的遍历,4.5 二叉树,遍历的算法实现:用递归形式格外简单!,则三种遍历算法可写为:,先序遍历算法void preorder(jiedian*root)if(root!=NULL)/非空二叉树 printf(“%d”,root-data);/访问Dpreorder(root-lchild);/递归遍历左子树preorder(root-rchild);/递归遍历右子树 return(0);,中序遍历算法void inorder(x*root)if(root!=NULL)inorder(root-lchild);printf(“%d”,root-data);inorder(root-rchild);return(0);,后序遍历算法void postorder(x*root)if(root!=NULL)postorder(root-lchild);postorder(root-rchild);printf(“%d”,root-data);return(0);,结点数据类型自定义typedef struct jiedianint data;struct jiedian*lchild,*rchild;jiedian;jiedian*root;,五、二叉树,5二叉树的应用 在产品的组成分析上,零件的建模、工艺设计等很多方面都可用树结构表示。任何一个三维模型都可以看作是由若干个简单的子模型经过多次的旋转、并、差、交等运算组合而成,因此,任何一个三维模型都可有一级子模型、二级子模型或多级子模型。,4.5 二叉树,五、二叉树,4.5 二叉树,机械CAD中常用的数据结构,线性表,栈,树,二叉树,4 机械CAD中常用的数据结构,小结掌握机械CAD中常用的数据结构,线性表的存储结构以及对线性表的建立、访问、修改、删除和插入的运算栈的存储结构以及对栈的建立、进栈和出栈的运算树的存储结构二叉树的存储结构以及对二叉树的遍历运算,

    注意事项

    本文(机械CAD中常用的数据结构.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开