数据结构概述

落爺英雄遲暮 提交于 2020-01-13 03:08:26

《java常用算法手册(第三版)–宋娟》学习记录

基础

  • 数据结构是计算机中对数据的一种存储和组织方式,同时也泛指相互之间存在一种或多种特定关系的数据的集合。数据结构是计算机艺术的一种体现,合理的数据结构能提高算法的执行效率,还可以提高数据的存储效率。

虽然很烦,但是不得不提的概念:

  • 目前数据结构没有统一的定义,不过总结,可以这么理解,一个数据结构是由数据元素依据某种逻辑联系组织起来的,数据元素之间的逻辑关系称为数据的逻辑结构。
  • 这里提下,数据元素(Data Element):是数据的基本单位,由数据项组成。在不同的条件下,数据元素又可称为元素、结点、顶点、记录等。数据元素是用一组属性描述定义、标识、表示和允许值的一个数据单元。
  • 数据项:数据项是具有独立含义的最小标识单位,是数据元的一个具体值,是数据记录中最基本的、不可分的有名数据单位。

栗子

为了便于理解,这里有个小栗子:

在这张表中,可以把每一行看作是一个数据元素,也可以称为记录或者结点。这个数据元素由学号、姓名、数学、物理、英语、语文成绩等数据项构成。
该表逻辑关系:

  • 表中的任意个结点,至多有一个前结点,一个后结点。
  • 有且只有第一个结点没有前结点,即开始结点
  • 有且只有最后一个结点没有后结点,即终端结点
    该表的数据运算:
    一般来说,主要有这几种运算:
  • 查询某个学生的成绩
  • 新增某个学生,增加一个结点
  • 某个学生退学,删除结点

数据结构组成

数据结构是一个有机的整体。由三部分组成:数据的逻辑结构、数据的存储结构和数据的运算。
这三个哪个发生变化,都会导致一个全新的

数据结构分类

一般按照数据的逻辑进行简单地分类,可分为线性数据结构,非线性数据结构。

线性数据结构
线性结构

简单地说,线性结构就是表中各个结点具有线性关系。如果从数据结构的语言来描述的话,线性结构应该包括如下内容:

  • 线性结构是非空集
  • 线性结构有且仅有一个开始结点和终端结点
  • 线性结构所有结点最多只有一个直接前趋结点和直接后继结点。(这里我把它俩理解成前结点和后结点)

前面提到的线性表就是典型的线性结构,还有栈、队列、和串等都是线性结构

非线性结构

简单地说,非线性结构就是表中各个结点具有多个对应关系。如果从数据结构的语言来描述的话,非线性结构应该包括如下内容:

  • 非线性结构是非空集
  • 非线性结构的一个结点可能有多个直接前趋结点和直接后继点。
    在实际应用中,数组、广义表、树结构和图结构等数据结构都是非线性结构。

后续继续ing…

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!