一直以来对数据结构都不是特别理解,前段时间正好看到一位大神的解说,让自己对数据结构有了进一步的认识,故在此记录,希望能够帮助更多人去理解数据结构。
数据结构一般包含如下三个方面:

1、数据的逻辑结构
数据的逻辑结构可以看做是从具体问题中抽象出来的数学模型,仅仅描述数据项之间的逻辑关系(理解到这里就可以了),即具体问题中各个数据项之间的前后关系。与数据在计算机中的存储位置无关,独立于计算机之外。

2、数据的存储结构:
是数据的逻辑结构在计算机中的实现,是具体的,与具体的计算机语言有关。通常有两种不同的存储方式:顺序存储和链式存储。

3、算法
数据的运算定义在数据的逻辑结构上,每种逻辑结构都有一个运算的集合。最常用的检索、插入、删除、更新、排序等运算实际上只是在抽象的数据上所施加的一系列抽象的操作。
 所谓抽象的操作,是指我们只知道这些操作是”做什么”,而无须考虑”如何做”。只有确定了存储结构之后,才考虑如何具体实现这些运算。

为了增加对数据结构的感性认识,我们通过下面的表格进行理解:


(1)逻辑结构的描述
  表中的每一行是一个数据元素(或记录、结点),它由学号、姓名、各科成绩及平均成绩等数据项组成。
表中数据元素之间的逻辑关系是:对表中任一个结点,与它相邻且在它前面的结点(亦称为直接前趋(Immediate Predecessor))最多只有一个;与表中任一结点相邻且在其后的结点(亦称为直接后继(Immediate Successor))也最多只有一个。表中只有第一个结点没有直接前趋,故称为开始结点;也只有最后一个结点没有直接后继。故称之为终端结点。

(2)存储结构
  该表的存储结构是指用计算机语言如何表示结点之间的这种关系,即表中的结点是顺序邻接地存储在一片连续的单元之中(顺序存储方式),还是用指针将这些结点链接在一起(链式存储方式)。

(3)数据的运算
  在上面的学生成绩表中,可能要经常查看某一学生的成绩;当学生退学时要删除相应的结点;进来新学生时要增加结点。究竟如何进行查找、删除、插入,这就是数据的运算问题。
搞清楚了上述三个问题,也就弄清了学生成绩表这个数据结构。

本文大部分借鉴了
http://student.zjzk.cn/course_ware/data_structure/web/gailun/gailun1.1.1.htm的文章,然后根据自己的理解整理了如上的文章。如果大家看不明白的话可以拜读上面大神的文章。

数据结构的简单理解(1)相关推荐

  1. 数据结构的简单理解(4)

    总结: 数据的逻辑结构.数据的存储结构及数据的运算这三方面是一个整体.孤立地去理解一个方面,而不注意它们之间的联系是不可取的. 逻辑结构可以分为:线性结构和非线性结构. 对于一些现实数据项,在讨论其数 ...

  2. 数据结构的简单理解(3)

    数据的存储结构可以分为以下四种: (1)顺序存储方法 该方法把逻辑上相邻的结点存储在物理位置上相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现. 由此得到的存储表示称为顺序存储结构 (Se ...

  3. 数据结构的简单理解(2)

    数据逻辑的结构: 在不产生混淆的前提下,我们常常将数据的逻辑结构称之为数据结构,这样的话数据结构可以分为两类:线性结构和非线性结构(不掺杂存储关系). 1.线性结构: 线性结构:若结构是非空集,则有且 ...

  4. linux文件系统只有几k,关于Linux文件系统的的简单理解和认识

    关于Linux文件系统的的简单理解和认识 关于文件系统的运作,这与操作系统带的档案数据有关.例如Linux操作系统的档案权限(rwx)与文件属性(拥有者,群组,时间参数等).文件系统通常会将这两部分的 ...

  5. Linux 文件区块连续吗,关于Linux文件系统的的简单理解和认识

    关于Linux文件系统的的简单理解和认识 关于文件系统的运作,这与操作系统带的档案数据有关.例如Linux操作系统的档案权限(rwx)与文件属性(拥有者,群组,时间参数等).文件系统通常会将这两部分的 ...

  6. 大话数据结构第一章理解

    一.概念          1.1 数据概念 数据:计算机能识别的能运算的符号,各种数据对象的集合--可以简单理解为各种类型的数组的集合. 数据对象:是性质相同的同一类型的数据元素的集合--可以简单理 ...

  7. 数据库|第一范式、第二范式、第三范式、BC范式、第四范式简单理解

    数据库|第一范式.第二范式.第三范式.BC范式.第四范式简单理解 在设计数据库的时候,虽说将我们要的数据正确完整导入数据库是很关键的,但是对于数据库的设计者来说,如何将大量数据合理有效正确地导入数据库 ...

  8. 简单理解selcet模型

    前期知识: 在开始接触select之前,你需要先对IO的同步,异步,阻塞,非阻塞有个基本的了解,知道什么是IO多路复用.下面这篇文章可以帮助你快速区分这几种模型:IO - 同步,异步,阻塞,非阻塞 ( ...

  9. CPU核心数线程数、程序进程线程、并发并行的简单理解

    CPU核心数线程数.程序进程线程.并发并行.简单理解和区分 这篇文章是对上述感念的简单理解,想深入研究可以看看<计算机组成原理> CPU的核心数 线程数 当我们买电脑的时候,会看到CPU的 ...

最新文章

  1. 解决git本地仓库与远程仓库关联出现 failed to push some refs to git的问题
  2. 【Python】快速认识Pandas的10大索引
  3. 贵!iPhone 11系列维修费用出炉 最高的可以入手一部华为P30 Pro了…
  4. Siddhi : Siddhi maven 仓库
  5. php中ignore_user_abort函数的用法
  6. android des ecb加密_Android逆向 | 基础知识篇 01
  7. mysql数据库学习——2,数据库的选定,创建,删除和变更
  8. 光盘文件导入服务器,web服务器 光盘文件
  9. 应用市场显示服务器错误的是,win10应用商店打不开服务器出错怎么办
  10. 华为选用ServiceHot ITSM提升运维服务能力
  11. Just Do It!
  12. Android如何使用banner制作我们的轮播图
  13. 关于 IBM Tivoli Storage Manager在Oracle中的应用
  14. 如何通过微信小程序进行更加有效的电商营销?
  15. java.net.UnknownHostException: localhsot
  16. 【DIY】制作一个刷卡进门装置
  17. Java平台,标准版Oracle JDK 9中的新功能
  18. python wms系统源码_java开发的wms仓库管理系统源码(PC+Android)
  19. 牛人的笔记本拆装-来自百度贴吧
  20. Python调用Linux终端命令---转自本人的私人博客

热门文章

  1. DIY一个高大上带提醒的计时器,简单实用,你还在等什么
  2. 计算机组成原理国防科大课件,中科大计算机组成原理课件ppt.pdf
  3. drupal linux安装,在Debian 10(Buster) Linux服务器中安装drupal 8.8.0的说明
  4. linux 源码 在线浏览,Linux下实现文档在线浏览
  5. nacos客户端获取配置
  6. 新生代中Eden:S1:S2为什么是8:1:1?
  7. Java连接Redis-Jedis简介
  8. 常用的函数式接口_Predicate接口练习_集合信息筛选
  9. spring事务环境搭建
  10. Dubbo支持的协议