数据结构与算法入门之基本概念和数据结构的类型

有哪些数据结构:

线性表、栈、队列、(字符)串、数组、广义表(都属于线性表)
树、二叉树、图
重点是:线性表和二叉树

基本概念:
  • 数据
          数据(data)是描述客观事物的数值、字符以及能输入机器且能被处理的各种符号集合。
          数据的含义非常广泛,除了通常的数值数据、字符、字符串是数据以外,声音、图像等一切可以输入计算机并能被处理的都是数据。
           例如:输了表示人的姓名、身高、体重等的字符串、数字是数据,人的照片、指纹、三维模型、语音指令等也都是数据。
  • 数据项
          数据项(data item)具有原子性,是不可分割的最小数据单位
          如描述学生相关信息的姓名、性别、学号等都是数据项。
          三位坐标中的每一维坐标值也是数据项。数据项具有原子性,是不可分割的最小单位。
  • 数据元素
          数据元素(data element)是数据的基本单位,是数据集合的个体,通常由若干个数据项组成,在计算机程序中通常作为一个整体来进行处理。
          例如一条描述一维学生的完整信息的数据记录就是一个数据元素;空间中一点的三维坐标也可以是一个数据元素。
  • 数据对象
          数据对象(data object)是性质相同的数据元素的集合,是数据的子集。
          例如一个学校的所有学生的集合就是数据对象,空间中所有点的集合也是数据对象。
    数据结构与算法入门之基本概念和数据结构的类型_第1张图片
  • 数据结构(不是建筑结构、人体结构)
          数据是一个抽象的概念,将其进行分类后得到程序设计语言中的基本类型。如:int,float,char等。数据元素之间不是相互独立的,存在特定的关系,这些关系便是结构。数据结构指数据对象中数据元素之间的关系。
          python提供了很多现成的数据结构类型,这些都是系统定义好的,不需要我们去自己去定义的数据结构叫做Python的内置数据结构,比如:列表、元组、字典等。而有些数据组织方式、Python系统里面没有直接定义,需要我们自己去定义实现这些数据的组织方式,这些数据组织方式称之为Python的扩展数据结构,比如栈,队列等。

数据结构与算法入门之基本概念和数据结构的类型_第2张图片
      由于信息可以存在于逻辑思维领域,也可以存在计算机世界,因此作为信息载体即数据同样存在于两个世界中。
      表示一组数据元素及其相互关系的数据结构同样也有两种不同的表现形式,一种是数据结构的逻辑层面,即数据的逻辑结构;一种是存在于计算机世界的物理层面,即数据的存储结构
      数据结构=逻辑结构+存储结构
      数据结构=逻辑结构+存储结构+(在存储结构上的)运算/操作

数据结构与算法入门之基本概念和数据结构的类型_第3张图片

数据结构的类型
数据的逻辑结构:数据的逻辑结构指数据元素之间的逻辑关系(和实现无关)
  1. 第一种分类:线性结构和非线性结构
  • 线性结构:有且仅有一个开始结点和终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继。
    线性表就是一个典型的线性结构,他有四个基本特征:
    (1)集合中必存在唯一的一个“第一元素”;
    (2)集合中必存在唯一的一个“最后元素”;
    (3)除最后元素之外,其他数据元素均有唯一的“后继”;
    (4)除第一元素之外,其他数据元素均有唯一的“前驱”。
    在这里插入图片描述
  • 非线性结构
          相对应于线性结构,非线性结构的逻辑特征是一个结点可能对应多个直接前驱和多个后继。
          常见的非线性结构有:树(二叉树等),图(网等)。
    数据结构与算法入门之基本概念和数据结构的类型_第4张图片
  1. 第二种分类:集合结构 线性结构 树状结构 网络结构
          逻辑结构有四种基本类型:集合结构、线性结构、树状结构和网络结构。
          表和树是最常用的两种高效数据结构,许多高效的算法能够用这两种数据结构来设计实现。
    集合结构:就是数学中所学的集合,集合中的元素有三个特征:
    (1)确定性:集合中的元素必须是确定的;
    (2)唯一性:集合中的元素互不相同;
    (3)无序性:集合中的元素没有先后之分,如集合(3,4,5)和集合(3,5,4)算作同一集合。
          该结构的数据元素间的关系是“属于同一集合”,别无其他关系。
          因为集合中元素关系很弱,数据结构中不对该结构及进行研究。
    线性结构:数据结构中线性结构指的是数据元素之间存在着“一对一”的线性关系的数据结构。
    树状结构:除了一个数据元素(元素01)以外每个元素有且仅有一个直接前驱元素,但是可以有多个直接后继元素。特点是数据元素之间是一对多的联系。
    网络结构:每个数据元素可以有多个直接前驱元素,也可以有多个直接后继元素。特点是数据元素之间是多对多的关系。
    数据结构与算法入门之基本概念和数据结构的类型_第5张图片
数据的存储结构

      数据的存储结构主要包括数据元素本身的存储以及数据元素之间关系的表示,是数据的逻辑结构在计算机中的表示。
      常见的存储结构有顺序存储,链式存储,索引存储,以及散列存储。

  • 顺序存储结构:把逻辑上相邻的节点存储在物理位置上相邻的存储单元中,结点之间的逻辑关系由存储单元的邻接关系来体现。由此的达奥的存储结构为顺序存储结构,通常顺序存储结构是借助于计算机程序语言设计(例如C/C++)的数组来描述。(数据元素的存储对应于一块连续的存储空间,数据元素之间的前驱和后继关系通过数据元素在存储器中的相应位置来反映。)数据结构与算法入门之基本概念和数据结构的类型_第6张图片
    优点:节省存储空间,因为分配给数据的存储单元全用存放结点的数据(不考虑C/C++语言中数组需指定大小的情况),结点之间的逻辑关系没有占用额外的存储空间。
    采用这种方法时,可实现对结点的随机存取,即每一个结点对应一个序号,由该序号可以直接计算出来结点的存储地址。
    缺点:插入和删除操作需要移动元素,效率较低。
    数据结构与算法入门之基本概念和数据结构的类型_第7张图片
  • 链式存储结构:数据元素的存储对应的是不连续的存储空间,每个存储节点对应一个需要存储的数据元素。每个结点是由数据域和指针域组成。元素之间的逻辑关系通过存储节点之间的链式关系反映出来。
    特点:
    (1)比顺序存储结构的存储密度小(每个节点都由数据域和指针域组成,所以相同空间内建设全存满的话,顺序比链式存储更多)。
    (2)逻辑上相邻的节点物理上不必相邻。
    (3)插入、删除灵活(不必移动节点,只要改变节点中的指针)。
    (4)查找接电视链式存储要比顺序存储慢。
    数据结构与算法入门之基本概念和数据结构的类型_第8张图片
  • 索引存储结构:处建立存储结点信息外,还建立附加索引来标识结点的地址。比如:图书、字典的目录。
    数据结构与算法入门之基本概念和数据结构的类型_第9张图片
  • 散列存储结构:根据结点的关键字直接计算出该结点的存储地址。
    一种神奇的结构,添加、查询速度快(就和数组中按照索引查找元素一样)。
    数据结构与算法入门之基本概念和数据结构的类型_第10张图片
    总结:
    数据结构与算法入门之基本概念和数据结构的类型_第11张图片

你可能感兴趣的:(python数据结构与算法)