CAD常用数据结构解析
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.数据的物理结构 :数据的物理结构也称为数据的存储
结构,是数据元素和它们之间的关系在计算机中的表示。
5.数据类型:数据类型是程序设计语言允许变量的种类。
每一种程序设计语言都提供一组基本的数据类型。 C 语言 提供字符型、整型、浮点型和双精度型4种基本的数据类型。
2.2 线性表
2.2.1 线性表的逻辑结构
a) 结点 图 2.2 链表结构
b) 链表
2.2.3
数组
几乎所有的程序设计语言都把数组作为固有数据类型。 数组可以看成是线性表的扩充,数组的存储也采用顺序分配 的原则,即在存储器中开辟一块连续的存储空间,依次存放 数组的各个元素。 我们可以用数组来顺序地表示线性表,线性表是一个一 维表,与线性表不同的是,数组可以是多维的。
如A(i),B(i, j),C(j1, j2, j3, …, jn)都可以表示一个数组,
A(4)是一维数组,数组长度为4; B(3, 5)是二维数组,第一维长度为3,第二维长度为5。
2.2.4
栈
进栈 出栈
1.栈的逻辑结构 栈也是线性表,它与普通线性 表的区别就在于对它的运算仅限定 在表尾。 假 定 栈 s=(a1, a2, a3, ,…, ai-1, ai, ai+1, …, an) , 则 a1 称 为栈底元素,an为栈顶元素。进栈 的顺序是 a1, a2, a3, ,…, an) , 出 栈 的 顺 序 是 an, an-1, …, a3, a2, a1 。它的显著特点是后进先出 (LIFO, Last In First Out)。
独立的个体。数据元素本身可能是简单的,也可能是复杂 的。 在复杂的线性表中,一个数据元素可以由若干个数据项组 成,此时常把数据元素称为记录,而含有大量记录的线性 表称为文件。
3.数据的逻辑结构 :通常所说的数据结构一般是指数据
的逻辑结构。数据的逻辑结构仅考虑数据之间的逻辑关系, 它独立于数据的存储介质。
间,还可以减少程序运行所用的时间。
本章介绍CAD常用的数据结构: 包括数组、
栈、队、链表、树 和二叉树。
2.1 基本概念
1.数据:是对客观事物的符号表示,在计算机中是指所有
能输入到计算机中并被计算机程序处理的符号总称。数值、 字符是数据,图形、图像也是数据。
2.数据元素:是数据的基本单位,是数据这个集合中相对
定义:n个数据元素的有限序列
一个数据元素可以由若干个数据项(Item)组成, 此时,常把数据元素称为记录( Record ),含有大 量记录的线性表又称为文件(File)。
姓 名 学号 性别 年龄 班 级 健康状况
王晓林
程 红 刘建平
02001
02002 02006
男
女 男
18
20 21
机械02 健康
a1
a2
a3
a4
……
an
所有数据元素ai在同一个线性表中必须是相同的数据类型。
2.2.2 线性表的存储结构
1.线性表的顺序存储结构
顺序存储就是用一组连续的存储单元,按照数据元素的逻辑 顺序依次存放。数据元素在存储器中的存放地址和该元素的 下标一一对应。 假定一个线性表A(n),它的每个数据元素占l个存储单元,第 一个数据元素在内存中的开始地址为L(a1),那么,第i个数 据元素的存储位置为
Байду номын сангаас
举例
2.线性表的链式存储结构
链式存储就是用一组任意的存储单元存放表中的数据元素。 结点:数据域、指针域 数据域:用于存放数据元素值; 指针域:用于存放直接前驱或直接后继结点的地址(指针)。
数据域 Data 指针域 Link
Head
Data1 Link1 Data2 Link2
…
Datan
第2章 CAD常用的数据结构
CAD内部以及CAD与CAPP、CAM之间
的数据集成:要求用户提供给计算机的已不是
简单的、孤立的数据,而是存在一定关系的批量数 据。这些数据是计算机操作的原材料,需要事先进 行组织构造,让它们按照某种具体的结构形式相互 关联在一起,这种关联就是数据结构。
合理的数据结构:不但可以减少程序所占空
栈顶
an … a3 a2
栈底
a1
图 2.3 栈结构
2.栈的存储结构 理论上讲,顺序存储或链式存储都可以作为栈的存 储结构。由于栈的容量一般是可以预见的,而且运算仅 限于栈顶,所以通常采用顺序存储作为栈的存储结构。
TOP=-1
TOP=0 A
TOP=4 E D C B A
TOP=2 C B A
3.栈的运算
L(ai)=L(a1)+(i-1)l
元素下标 内存状态 存储地址 … b 1 a1 b+1l 2 a2 b+2l 3 a3 b+3l … … b+(i-1)l i ai … … n an b+(n-1)l …
图 2.1 线性表的存储结构
线性表顺序存储结构的特点 (1) 有序性:各数据元素之间的存储顺序与逻辑顺序一致。 (2) 均匀性:每个数据元素所占存储空间的长度是相等的。 根据以上特点不难看出程序设计语言中的数组是典型的顺序 存储的线性表。因此用程序建立顺序存储的线性表及对该表 的运算,可通过对数组的说明和运算来实现。
机械02 一般 机械02 神经衰弱
(a1,a2,a3,…,an)表中元素的个数n定义为线性表的长度 (n>=0),n=0的表称为空表。
线性表的特点:
1) 线性表是数据元素的一个有限序列。 2) 线性表中数据元素的个数定义为线性表的长度n,当n =0时, 为空表 。 3)数据元素在线性表的位置取决于它们自己的序号,数据元素 之间的相对位置是线性的,如a1是第一个元素,an是最后一个 元素。 4)除了第一个和最后一个数据元素外,每个数据元素有且只 有一个直接前趋,有且只有一个直接后继。
图 2.4 出入栈操作
建栈 栈的存储结构用数组s[n]。设一栈顶指针为TOP,它 不必指向数据元素的实际地址,只记录数据元素的逻辑序号 即可。当元素尚未进栈时,令TOP等于-1。 进栈 如果有元素进栈,首先检查栈顶指针TOP,如果TOP等 于 m ,表示栈满。如果 TOP<m ,令 TOP=TOP+1 ,将该元素赋给 s[TOP]。 出栈 出栈即取走栈顶元素。首先检查栈顶指针 TOP ,如果 TOP=-1,表示栈空。如果TOP>-1,出栈元素为s[TOP],然后 令TOP=TOP-1。