zoukankan      html  css  js  c++  java
  • 数据结构(C语言版)---基本概念和术语

    1、程序=数据的存储+数据的操作+可以被计算机执行的语言

    2、数据:对客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。

    3、数据项:数据的不可分割的最小单位。

    4、数据元素:数据的基本单位。一个数据元素可由若干个数据项组成。

    5、数据对象:性质相同的数据元素的集合,数据的一个子集。

    6、数据的逻辑结构:数据元素之间的逻辑关系。与数据的存储无关,独立于计算机。

          线性结构(一对一):线性表

          非线性结构:集合、树形结构(一对多)、图形结构/网状结构(多对多)

    7、数据的物理结构/存储结构:数据结构在计算机中的表示/映象。

          1)、顺序映象:借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系。对应于顺序存储结构。

          2)、非顺序映象:借助指示元素存储地址的指针表示数据元素之间的逻辑关系。对应于链式存储结构。

          3)、存储结构主要有四种:

                    顺序存储:逻辑上相邻物理上也相邻

                           优点:随机存取

                           缺点:只能使用相邻的一整块存储单元。

                    链式存储:借助指示元素存储地址的指针表示数据元素之间的逻辑关系

                            优点:能够充分利用存储单元

                            缺点:因存储指针而占用额外的存储空间,只能实现顺序存取

                     索引存储:附加索引表

                            优点:检索速度快

                            缺点:附加索引表占用较多存储空间

                     散列存储/Hash存储:根据元素的关键字直接计算出元素的存储位置

    8、数据结构: 

           1)、狭义:
                          数据结构是专门研究数据存储的问题
                          数据存储包含两方面:个体存储+个体关系存储
                     广义:
                          数据结构既包含数据的存储也包含数据的操作
                          对存储数据的操作就是算法

            2)、形式定义---二元组,Data_structure=(D,S),D---数据元素的有限集,S---D上关系的有限集。
            3)、数据结构=个体+个体的关系。

    9、算法: 解题的方法和步骤

           1)、狭义:
                          算法是和数据的存储方式密切相关
                    广义:
                          算法和数据的存储方式无关
                          这就是泛型的思想
          2)、衡量算法的标准
                         时间复杂度T(N)=O(f(n))
                               大概程序要执行的次数,而非执行时间

                               分析时间复杂度时的规则

                                      加法规则:T(n)=T1(n)+T2(n)=O(f(n))+O(g(n))=O(max(f(n),g(n)))

                                      乘法规则:T(n)=T1(n)*T2(n)=O(f(n))*O(g(n))=O(f(n)*g(n))

                               常见的渐进时间复杂度

                                       O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)
                         空间复杂度S(n)=O(g(n))
                               算法执行过程中大概所占用的最大内存

                               算法原地工作是指算法所需的辅助空间为常量,
                         难易程度
                         健壮性
            3)、算法=对存储数据的操作。

            4)、重要特性:有穷性、确定性、可行性、输入、输出

            5)、目标/要求:正确性、可读性、健壮性、效率与低存储量需求
    10、数据的线性存储结构有几种
            1)、连续存储【数组】
                            优点:存取速度快
                            缺点:插入删除元素很慢,空间通常是有限的,事先知道数组的长度,需要大块连续的内存块
             2)、离散存储【链表】
                            优点:空间没有限制,插入删除元素很快
                            缺点:存取速度慢

    11、数据类型:一个值的集合和定义在该值集上的一组操作的总称。

                   原子类:值不可分解,eg.C中的基本类型、指针类型、空类型。

                   结构类型:值由若干成分按某种结构组成,可分解,eg.数组。

                   抽象数据类型

    12、抽象数据类型(ADT):指一个数学模型以及定义在该模型上的一组操作,仅取决于它的一组逻辑特性。

            按“值”的不同特性分类:

                   原子类型:变量的值不可分解。

                   结构类型:固定聚合类型:变量的值由确定数且成分按某种结构组成。

                                      可变聚合类型:变量的值的成分数目不确定。

            三元组表示(D,S,P),D---数据对象,S---D上的关系集,P---对D的基本操作的集合。

    13、多型数据类型:值的成分不确定的数据类型,从ADT的角度看,具有相同的数据抽象特性。

  • 相关阅读:
    CodeDOM浅析(上)
    这段代码居然运行正常
    CodeDOM浅析(下)
    动态生成与编译(七)根据CodeDOM生成源代码
    动态生成与编译(九)CodeDOM的局限
    动态生成与编译(八)动态编译
    新年送大礼
    祝所有的女性朋友们节日快乐!
    预测人民币在2006年最终的收盘价
    2007年春节,祝朋友们:身体健康,万事如意! 度过一个愉快春节!
  • 原文地址:https://www.cnblogs.com/xqy1874/p/12699985.html
Copyright © 2011-2022 走看看