首页 > 技术文章 > 数据结构是什么

monion 2017-06-19 17:05 原文

                               

数据结构:

      概念:

        反映一个数据的内部构成  
        数据由哪些成分数据构成,以什么方式构成,呈什么结构

      基础:

        逻辑结构:反映成分数据之间的逻辑关系

        物理结构:数据结构反映成分数据在计算机内部的存储安排

        数据操作:

 

        内涵:

             数据结构是数据存在的形式, 是信息的一种组织方式.

             设计:

为了提高算法的效率,它通常与一组算法的集合相对应,通过这组算法集合可以对数据结构中的数据进行某种操作

 

        数据是指由有限的符号组成的元素的集合,结构是元素之间的关系的集合

        逻辑结构有四种基本类型:集合结构、线性结构、树状结构和网络结构

                         表是线性结构的(全序关系)

                         树(偏序或层次关系)是非线性结构。

   

       

    研究:

       数据的各种逻辑结构和存储结构,以及对数据的各种操作

 

       设计取决于数据的逻辑结构,算法的实现取决于数据的物理存储结构。

 

   

    数据:

        标准:根据数据结构分类

具有相同数据结构的数据属同一类。同一类数据的全体称为一个数据类型

        数据类型用来说明一个数据在数据分类中的归属,是数据的属性,属性限定了数据的变化范围

 

    不同的语言所定义的数据类型是不同的:

              简单数据类型对应于简单的数据结构;

              构造数据类型对应于复杂的数据结构

在复杂的数据结构里,允许成分数据本身具有复杂的数据结构,

因而,构造数据类型允许复合嵌套

 

指针类型对应于数据结构中成分数据之间的关系,表面上属简单数据类型,实际上都指向复杂的成分数据即构造数据类型中的数据,因此这里没有把它划入简单数据类型,也没有划入构造数

据类型,而单独划出一类。

 

 

 

 

 

按数据结构中的成分数据之间的关系,数据结构有线性与非线性之分。在非线性数据结构中又有层次与网状之分。

 

数据类型按照该类型中的数据所呈现的结构也有线性与非线性之分,层次与网状之分

 

 

    抽象数据类型:

           把数据类型和数据类型上的运算捆在一起,进行封装

 

           抽象数据类型上定义的过程和函

数以该抽象数据类型的数据所应具有的数据结构为基础。

 

算法:

   定义:运算序列

 

所有运算定义在一类特定的数据模型上,并以解决一类特定问题为目标

   特征:

       有限性:即序列的项数有限,且每一运算项都可在有限的时间内完成

       确定性:即序列的每一项运算都有明确的定义

       无二性:可以没有输入运算项,但一定要有输出运算项

       可行性:即对于任意给定的合法的输入都能得到相应的正确的输出

 

   编程语言的发展:

        核心:算法的程序表达(算法要素的程序表达)

       运算序列算法要素:

           1).运算序列中各种运算的运算对象和运算结果的数据

           2).运算序列中的各种运算

           3). 运算序列中的控制转移

             数据、运算、控制

 

          

       衍生:

基础:算法的多变

           1.运算序列中各种运算的运算对象和运算结果的数据

                  --简单:布尔值数据、字符数据、整数和实数数据等

                  --复杂:向量、矩阵、记录等数据

                  --更复杂:集合、树和图,还有声音、图形、图像等数据

          2. 运算序列中的各种运算

               运算种类:

                  --初等:赋值运算、算术运算、逻辑运算和关系运算等

                  --复杂:算术表达式和逻辑表达式等

                  --更复杂:有函数值计算、向量运算、矩阵运算、集合运算,

以及表、栈、队列、树和图上的运算等

                   运算的复合与嵌套

 

 

           3. 控制转移:

在串行计算中,它只有顺序、分支、循环、递归和无条件转移等几种

 

 

 

机器语言:具体的计算机上的一个指令集

      特征:

           只接受算术运算、按位逻辑运算和数的大小比较运算等,对于稍复杂的运算,都必须一一分解,直到到达最初等的运算才能用相应的指令替代之

           能直接表达的数据只有最原始的位、字节、和字三种。算法中即使是最简单的数据如布尔值、字符、整数、和实数,也必须一一地映射到位、字节和字中,还得一一分配它们的存储单元

           控制转移指令也只有无条件转移、条件转移、进入子程序和从子程序返回等最基本的几种。用它们来构造循环、形成分支、调用函数和过程得事先做许多的准备,还得靠许多的技巧

 

每一条指令都以编码(指令码和地址码)的形式出现

 

汇编语言:

    特征:

       将机器语言的每一条指令符号化:指令码代之以记忆符号,地址码代之以符号地址,使得其含义显现在符号上而不再隐藏在编码中

 

       摆脱了具体计算机的限制,可在不同指令集的计算机上运行,只要该计算机配上汇编语言的一个汇编程序

 

 

高级语言的设计:

        内涵:先表达成一种中介语言,然后转成机器语言

           感悟:

规范性:语言之间的翻译过程有章可循,通过设计一些编译程序,由计算机来完成语言之间的翻译过程

        特征:

           数据、运算和控制三方面的表达中引入许多接近算法语言的概念和工具,大大地提高抽象地表达算法的能力

 

 

算法表达方式:

       1.缺省的顺序控制

       2.条件(分支)控制:"if表达式(为真)then S1 else S2;

       3. 选择(情况)控制:Case 表达式 of

       4. 循环控制:

       5. 函数和过程的调用,包括递归函数和递归过程的调用

       6. 无条件转移goto

推荐阅读