套用数据结构(application data structure)是数据结构在很多软体资料库等都是必不可少的一种具有一定逻辑关係,在计算机中套用某种存储结构,并且封装了相应操作的数据元素的集合。它包含三方面的内容,逻辑关係、存储关係以及操作。
基本介绍
- 中文名:套用数据结构
- 外文名:application data structure
- 涉及学科:计算机等
- 套用领域:CAD、资料库等
- 缩写:ADS
- 对象:数据结构
数据结构
背景
计算机处理的信息和数据不仅包括数字,而且包括字元、表格、图形、图像、声音、动画等複杂问题,这些信息不只是简单、孤立的数据,而是存在某些关係的数据。独立的数据往往是毫无意义的,只有将它们组织在一起才能赋予它们确切的含义。如何组织、处理这些信息,就是数据结构的基本问题。数据结构就是指数据之间的结构层次关係。例如,给定二个点的坐标,计算机可以将它们连成一个三角形.也可以过这三个点作一个圆或画一段圆弧。但是,如果事先并没有确定这三个点之间的绘图关係,亦即如何组织利用这三个点进行画线、画圆或画圆弧,那幺计算机就不能完成相应的动作。只有当点的坐标和绘图关係确定之后,计算机才能画出我们所希望的图形。因此,数据及其结构层次关係在计算机中的表达,是影响套用软体成败及效率高低的关键。
概念
数据结构是一种具有一定逻辑关係,在计算机中套用某种存储结构,并且封装了相应操作的数据元素的集合。它包含三方面的内容,逻辑关係、存储关係以及操作。
数据的逻辑结构大致上可以分为线性结构和非线性结构。线性结构的数据元素之间存在一对一的关係,其特点是除了开头和最后一个节点外,其他的任意一个节点都只有一个直接前驱节点后后继节点。线性结构主要包括有线性表、栈和伫列。树、集合、图都是非线性结构,其中树形结构模拟层次,图形结构模拟对称和非对称关係。研究数据结构是程式设计的需要,是为了使得程式设计更加的健壮、高效,使得程式的开发更加的方便。
数据结构的设计
套用数据结构解决生活中的问题的首要前提是研究套用什幺数据结构解决生活中的问题。
分析步骤
其分析步骤为:
- 首先分析任务中的操作对象,即找出任务中涉及到的数据,从中总结和抽象出操作对象,并且分析操作对象之间的逻辑关係;
- 其次根据任务中对操作对象的操作,研究套用何种存储方式来存储数据才能高效的执行程式并且占用较小的存储空间。
- 选择数据结构的接口要最接近软体的需求。通常当有多个满足需要的接口数据结构实现时,可以根据比较他们的接口操作的运行时间以及数据结构消耗的空间来进行选择,有的时候时间和空间可以相互转换,比如可以用空间来交换操作的效率;
- 最后在物理存储方式的基础上设计正确的算法实现操作,完成任务。
建立数据结构
生活中所要处理的数据之间可以抽象出来不同的逻辑关係,建立不同的数据结构,但是针对实际问题要从中选取能够準确描述问题的基本特性并且易于实现的逻辑结构。
例如:八枚硬币中其中有一枚硬币是较为轻的,要求用一个天平将这枚轻的硬币判断出来,判断的过程採用将硬币分析两组或者三组,分别使用天平比较的方式来判断。这一判断过程可以用一个树形图来表示,所以可以将该问题抽象为判定树,构建树形结构。
存储结构
根据选定的数据结构可以用不同的存储结构来实现。不同类型的数据结构常用的存储结构为顺序存储结构、链式存储结构、散列存储结构及索引存储结构。不同的存储结构具有不同的特点,大致上存在的差异在存储空间和运算效率两个方面。例如线性表的顺序存储结构与链式存储结构在存储空间上来对比,链式存储结构显然要多占用一部分存储空间。从运算效率上来对比,如果线性表需要进行大量的插入和删除操作的话,那幺链式存储结构从执行效率上来讲要占有优势。而如果线性表要反覆进行查询操作的话,顺序存储结构具备随机读写的特点,就比较适合这种情况。
设计
确定数据的逻辑关係与存储结构的情况下,可以设计出不同的算法来实现套用。设计的算法应该是正确的算法。正确的算法的含义是:能够解决实际问题,输入的所有可能的合法的输入都能产生预期的正确的结果;能够在有穷的步骤内执行完程式;能够用最简短的语句最高效的完成任务。
套用数据结构解决表达式中括弧匹配问题
抽象数据的逻辑结构
在此问题中操作对象为表达式的括弧,括弧的匹配的表达式都具有这样的特点:在从左至右扫描表达式的过程中,最先扫描到的右括弧必定与之前最后扫描到的左括弧相匹配。根据这特点及栈的先进后出的特点可以将表达式抽象成栈,表达式中的左、右括弧为栈中的数据元素。并且该逻辑结构具有出栈及入栈的操作能够满足任务的需求。
选用存储数据的物理结构
顺序栈占用存储空间小,不浪费空间,同时进栈与出栈操作程式执行效率高。所以解决该问题可採用顺序存储结构实现栈。顺序栈的特点是:用一组连续的空间存放自栈底到栈顶的数据元素。数据元素之间存线上性关係,第一个入栈的数据元素称为栈底元素,最后一个入栈的数据元素称为栈顶元素,用指针TOP标誌。顺序栈的基本操作包括:创建一个空栈、判断栈是否为满、判断栈是否为空、得出栈的长度、入栈、出栈、返回栈顶元素。如图所示:

顺序栈入栈操作的实现步骤为:
判断如果栈己满,返回false,不允许入栈
- 若栈不满,将栈顶指针top+ 1
- 数据element存入top所指的空间中
- 操作成功返回true
顺序栈出栈操作的实现步骤为:
- 判断顺序栈状态,如果栈己空,不允许出栈
- 若栈不空,取出栈顶指针top所指的内容
- 栈顶指针top-1,指向下一个元素
- 返回出栈数据
算法描述
关于括弧匹配的操作是这样进行的:
(1)将输入的表达式按序存入数组,扫描整个数组,遇到左括弧都进行栈
(2)遇到右括弧
①先进行判空,若是空栈,则一个右括弧入栈后一定是不匹配的
②如果判空后不是空栈,那幺就把栈里的括弧弹出并与遇到的第一个右括弧进行匹配判断,若匹配则继续执行步骤1. 2,若不匹配则整个表达式也不匹配。
(3)当进行完上面得操作后,如果栈不为空,那就说明肯定还有括弧留在栈中,那一定就是不匹配了。若整个表达式扫描完毕,栈也为空,则说明表达式中括弧匹配。
套用数据结构
以上所讲的数据结构在计算机辅助机械设计系统中的套用主要有下列几个方面:
为设计资料的数据描述提供依据
从严格意义上来讲,应用程式中对任何一个变数的定义、对任何一个数据档案的存取都涉及到数据结构的问题。定义数据结构应遵循的一个基本原则是:数据结构简单、逻辑关係明确清晰、便于操作、存取速度快、运行效率高、占用存储空间少。对简单意义的变数一般可以用常量、单变数来定义;对较为複杂的数据一般可以用一维数组、多维数组、结构变数或指针来定义。
适合套用软体
适合套用软体作业中对设计模型作实时修改的需要。如增加、删除、修改记录等。应根据实际情况,对线性结构的数据和非线性结构的数据构造不同的数据结构,以便于提高数据操作的效率。顺序存储结构和链式存储结构各有优缺点,它们适合于不同的场合,因而选用时应权衡考虑。
为数据检索提供条件
在设计中常常需要根据设计对象的某些特徵、属性来检索一些数据以供设计之用,为此就必须利用数据结构来提供条件。如一部机器可能由很多个零件组成,套用软体作业中可能需要根据零件的名称、材料、标準件或非标準件等条件进行检索。这就需要很好地定义零件信息的数据结构以便检索。
为数据通信提供条件
如为网路机械设计、数据交换及共享数据资源提供条件。智慧型化、集成化和网路化是目前CAD发展的趋势。这些都涉.及到大量数据的通信和交换。只有严密、高效的数据结构才能保证计算机辅助机械设计技术的健康发展。