一、什么是数据结构

数据结构,直白地理解,就是研究数据的存储方式。

我们知道,数据存储只有一个目的,即为了方便后期对数据的再利用,就如同我们使用数组存储 {1,2,3,4,5} 是为了后期取得它们的值,因此,数据在计算机存储空间的存放,决不是胡乱的,这就要求我们选择一种好的方式来存储数据,而这也是数据结构的核心内容例如,要存储这样一组数据:{张三,张四,张五,张六,张七},数据之间具有这样的关系:张三是张四、张五的父亲,同时张四还是张六和张七的父亲,数据之间的关系如图所示:

对于存储之间具有复杂关系的数据,如果还是用变量或数组来存储(比如用数组存储 {“张三”,"张四",“张五”,"张六","张七"} ),数据存储是没有问题,但是无法体现数据之间的逻辑关系,后期根本无法使用,显然不明智。针对此类数据,数据结构提供了树(或者图)存储结构,专门用于存储这类数据。通过以上示例可以体会出,数据结构教会我们的绝不仅仅是如何存储 1、2、这样简单的数据,而是解决具有复杂关系的大量数据的存储问题。

二、常用的数据结构

线性表

顺序表

链表

队列

三、线性表介绍

线性表结构存储的数据往往是可以依次排列的,就像小朋友手拉手,每位学生的前面和后面都仅有一个小朋友和他拉手,具备这种“一对一”关系的数据就可以使用线性表来存储。

例如,存储类似 list = [1,3,5,7,9]这样的数据时,各元素依次排列,每个元素的前面和后边有且仅有一个元素与之相邻(除首元素和尾元素),因此可以使用线性表存储。线性表并不是一种具体的存储结构,它包含顺序存储结构和链式存储结构,是顺序表和链表的统称。

四、顺序表

顺序表,简单地理解,就是常用的数组,只是换了个名字而已,例如使用顺序表存储 {1,3,5,7,9},如图所示:

五、链表

我们知道,使用顺序表(底层实现靠数组)时,需要提前申请一定大小的存储空间,这块存储空间的物理地址是连续的,如图所示。链表则完全不同,使用链表存储数据时,是随用随申请,因此数据的存储位置是相互分离的,换句话说,数据的存储位置是随机的为了给各个数据块建立“依次排列”的关系,链表给各数据块增设一个指针,每个数据块的指针都指向下一个数据块(最后一个数据块的指针指向 NULL),就如同一个个小学生都伸手去拉住下一个小学生的手,这样,看似毫无关系的数据块就建立了“依次排列”的关系,也就形成了链表,如图所示:

六、栈

栈和队列隶属于线性表,是特殊的线性表,因为它们对线性表中元素的进出做了明确的要求。栈中的元素只能从线性表的一端进出(另一端封死),且要遵循“先入后出”的原则,即先进栈的元素后出栈。

栈结构如图所示,像一个木桶,栈中含有 3 个元素,分别是 A、B 和 C,从在栈中的状态可以看出 A 最先进的栈,然后 B 进栈,最后 C 进栈。根据“先进后出”的原则,3 个元素出栈的顺序应该是:C 最先出栈,然后 B 出栈,最后才是 A 出栈。

七、队列

队列中的元素只能从线性表的一端进,从另一端出,且要遵循“先入先出”的特点,即先进队列的元素也要先出队列。

队列结构如图所示,队列中有 3 个元素,分别是 A、B 和 C,从在队列中的状态可以看出是 A 先进队列,然后 B 进,最后 C 进。根据“先进先出”的原则,3 个元素出队列的顺序应该是 A 最先出队列,然后 B 出,最后 C 出。

八、树存储结构

树存储结构适合存储具有“一对多”关系的数据。

如图所示,其中张四只有一个父亲,但他却有两(多)个孩子,这就是“一对多”的关系,满足这种关系的数据可以使用树存储结构。

九、图存储结构

图存储结构适合存储具有“多对多”关系的数据。

如图所示,从 V1 可以到达 V2、V3、V4,同样,从 V2、V3、V4 也可以到达 V1,这就是“多对多”的关系,满足这种关系的数据可以使用图存储结构。

python的数据结构包括那些_python算法与数据结构-什么是数据结构相关推荐

  1. python数据结构包括什么_Python中的数据结构详解

    概述 在深入研究数据科学和模型构建之前,Python中的数据结构是一个需要学习的关键内容 了解Python提供的不同数据结构,包括列表.元组等 介绍 数据结构听起来是一个非常直截了当的话题,但许多数据 ...

  2. python 树状数组_【算法日积月累】19-高级数据结构:树状数组

    树状数组能解决的问题 树状数组,也称作"二叉索引树"(Binary Indexed Tree)或 Fenwick 树. 它可以高效地实现如下两个操作: 1.数组前缀和的查询: 2. ...

  3. python的应用包括哪些_Python应用领域有哪些?

    1.数据分析与处理 通常情况下,Python被用来做数据分析.用C设计一些底层的算法进行封装,然后用Python进行调用.因为算法模块较为固定,所以用Python直接进行调用,方便且灵活,可以根据数据 ...

  4. python 从大到小循环_python算法(3) 插入排序

    python算法(3) 插入排序 算法分析 给出一个乱序的数列,将这个数列按从小大到(从大到小)重新排列 插入排序的的逻辑是从选这个数列,一个一个的插入一到一个新的数列中 如下: 初始数列: 5 1 ...

  5. python的字符串包括哪些_python公开课|Python字符串包含什么,我们应该怎么用

    [摘要]在这个科学技术高速发展的时代,越来越多的人都开始选择学习编程软件,那么首先被大家选择的编程软件就是python,也用在各行各业之中,并被大家所熟知,所以也有越来越多的python学习者关注py ...

  6. python栈是什么意思_Python算法之栈(stack)的实现

    本文以实例形式展示了Python算法中栈(stack)的实现,对于学习数据结构域算法有一定的参考借鉴价值.具体内容如下: 1.栈stack通常的操作: Stack() 建立一个空的栈对象 push() ...

  7. python的字符串包括哪些_python 字符串详解

    python 字符串 介绍字符串相关的:比较,截取,替换,长度,连接,反转,编码,格式化,查找,复制,大小写,分割等操作 什么是字符串 字符串或串(String)是由数字.字母.下划线组成的一串字符. ...

  8. python中if的效率_Python算法效率和增长量级,经典题目回顾

    小tips 做这样的分析可以把代码拷贝到记事本,然后在后面写步数,比手写快得多 image.png 第一题 def program1(L): multiples = [] for x in L: fo ...

  9. python基本数据类型包括哪些_python入门3——基本数据类型

    一.什么是数据类型 不同种类的数据类型的存取机制不一样,用途也不一样. 二.数据为何分类 数据是事物的状态,事物的状态是分为多种多样的,对应着就应该用不同类型的数据去记录. 三.常用数据类型以及如何用 ...

最新文章

  1. 机器学习-第九章 聚类
  2. https://www.adminsub.net/tcp-udp-port-finder/14000 ——查找tcp端口对应的服务 可以看某些端口是否让恶意软件开启...
  3. java语言的数组描述_下列关于Java语言的数组描述中,错误的是()。_学小易找答案...
  4. 说说几个 Python 内存分配时的小秘密
  5. C++内联函数的学习
  6. CTF——MISC——流量分析
  7. 英文简历 计算机知识,计算机应届生英文简历范文
  8. 2017-06-23
  9. ubuntu或者fedora下编译淘宝tair key-value-db的开源内存数据库
  10. const,readonly字段的取舍!
  11. php20行代码写小偷程序,PHP100教你20行代码写小偷程序
  12. 《软件体系结构》 第一章 软件体系结构概论
  13. 安装linux取消硬盘密码设置,Linux Deepin安装到硬盘图文过程
  14. 排序算法 稳定和不稳定_稳定和不稳定排序算法之间的区别?
  15. 网站推广优化教程100条(完整版)
  16. 有什么办法可以让微信群二维码永久有效?这类的二维码生成器怎么制作?
  17. python求自定义函数的导数
  18. java ssl 双向认证_java实现 SSL双向认证
  19. 4个公认高用的OCR文字识别网站,免费高效率!
  20. 第二届中国移动“梧桐杯”大数据应用创新大赛总决赛12强名单发布

热门文章

  1. java 正则首位8或者9的8位数字_从零开始学Python - 第025课:正则表达式的应用
  2. 屏幕中间显示已停用缩放_有关标签打印软件缩放工具的介绍
  3. jeecg输入中文查询导表为空_学术利器—SCI期刊影响因子查询/中文核心期刊查询系统更新...
  4. 局部特征检测器和描述符
  5. 李航《统计学习方法》-----朴素贝叶斯
  6. Awesome Mac:收集的非常全面好用的Mac应用程序、软件以及工具
  7. csplit 分割文件
  8. linux配置redis服务,Linux下安装Redis并设置相关服务
  9. 冷藏温度范围_食品冷藏冷冻温度要求与管理规范
  10. python hook_python_理解篇_钩子方法的理解