数据结构(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的角度看,具有相同的数据抽象特性。

原文地址:https://www.cnblogs.com/xqy1874/p/12699985.html