zoukankan      html  css  js  c++  java
  • 数据结构是什么

                                   

    数据结构:

          概念:

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

          基础:

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

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

            数据操作:

            内涵:

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

                 设计:

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

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

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

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

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

       

           

        研究:

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

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

       

        数据:

            标准:根据数据结构分类

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

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

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

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

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

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

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

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

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

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

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

        抽象数据类型:

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

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

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

    算法:

       定义:运算序列

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

       特征:

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

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

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

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

       编程语言的发展:

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

           运算序列算法要素:

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

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

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

                 数据、运算、控制

              

           衍生:

    基础:算法的多变

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

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

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

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

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

                   运算种类:

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

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

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

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

                       运算的复合与嵌套

               3. 控制转移:

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

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

          特征:

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

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

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

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

    汇编语言:

        特征:

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

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

    高级语言的设计:

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

               感悟:

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

            特征:

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

    算法表达方式:

           1.缺省的顺序控制

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

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

           4. 循环控制:

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

           6. 无条件转移goto

  • 相关阅读:
    C++ 从文件中读取数据的代码及优化
    EOF在C++中的含义
    利用"中值滤波原理"过滤异常数据(转载)
    Hive差集运算详解
    H5 玩出新花样(一) -- 森林领导术不倒流
    C++中怎么暂停几秒
    c语言中 srand(time(NULL)); 这句话是什么意思(尤其是 NULL)
    C++ 码代码的风格(推荐)
    c/c++编译器的安装
    jquery的$(selector).each,$.each的区别
  • 原文地址:https://www.cnblogs.com/monion/p/7049565.html
Copyright © 2011-2022 走看看