01. 数据结构概述

1.1 数据结构概述

  • 在工作中,我们为了解决问题,需要将数据保存下来,然后根据数据存储方式设计算法进行处理。
  • 根据数据的存储方式不同,我们使用不同的算法处理。
  • 而我们现在需要考虑算法解决问题的效率问题,所以需要考虑数据究竟如何保存,这就是数据结构。

    1.2 数据结构的概念

  • 数据是一个抽象的概念,将其进行分类后得到程序设计语言中的基本类型,如:list、tuple等。

  • 数据元素之间不是独立的,存在特定的关系,这些关系便是结构。数据结构指数据对象中数据元素之间的关系。
  • Python提供了很多现成的数据结构类型,如列表、元组、字典等,无须我们自己去定义。
  • 而Python没有定义的,就需要我们自己去定义实现这些数据的组织方式,称为Python扩展数据结构,如:栈、队列等。

    1.3 为什么学习数据结构

  • 在真正的项目开发中,大部分时间都是从数据库取数据 >> 数据操作和结构化 >> 返回给前端,

  • 在数据操作过程中需要合理地抽象,组织、处理数据,如果选用了错误的数据结构,就会造成代码运行低效。

    02. 数据结构分类

    2.1 线性结构

  • 线性结构指的是n个数据元素的有序集合,是一对一的映射。

  • 顺序表:将数据结构中各元素按照其逻辑顺序存放于存储器一片连续的存储空间中。
  • 链表:将数据结构中各元素分布到存储器的不同点,用记录下一个结点位置的方式建立它们之间的联系。
  • 栈:先进后出。
  • 队列:先进先出。

    2.2 非线性结构

  • 非线性结构是一对多或者多对多的映射。

  • 树形结构:一对多的关系。
  • 图状结构:多对多的关系。

    03. 抽象数据模型

  • 抽象数据类型是指一个数学模型以及定义在此数学模型上的一组操作,及把数据类型和数据类型上的运算捆在一起进行封装。

  • 引入抽象数据类型的目的是把数据类型的表示和数据类型上的运算的实现与这些数据类型和运算在程序中的引用隔开,使他们相互独立。
  • 即把原有的基本数据和这个数据所支持的操作放到一起,形成一个整体。
  • 最常用的数据运算操作包括:插入、删除、修改、查找、排序。