在刚开始学习数据结构,我推荐一定要搞懂三个问题,这将对我们学习数据结构的帮助很大,能让我们对数据结构有一个清晰的认识,问题如下

1.学习数据结构是干嘛用的?

2.什么是数据结构?

3.数据结构要学习什么?

明白了这两个问题,我们就知道了数据结构的作用是什么,如果对我们有用,那么我们应该怎样学习使用用它。

********************************************************************************************

以下是我对这两个问题的个人看法

1.学习数据结构是干嘛用的?

早期,计算机主要用于数值计算,那时候数据元素间的关系简单,计算复杂,软件设计者主要精力用于程序设计的技巧上,而对如何在计算机组织数据并不需要花费太多的时间更精力。但是随着计算机应用领域的扩展,计算机被越来越多地用于非数值计算,不再是单纯的数值数据。无法用数学公式或者数学方程来解决。这时我们就必须去考虑组织这些数据,而这些数据并不是杂乱无章的,它们一定有内在的联系,只要弄清楚它们之间本质的联系,就能使用计算机对大量的数据进行有效的处理。这就我们的数据结构所要研究的内容。

在举个例子:计算机在解决一个现实问题通常要进行以下几个步骤,见下图

而第一步将具体问题抽象为数学模型的实质是:

问题(机外表示、处理要求)->数学模型(逻辑结构、基本操作)->编程实现(存储结构、实现算法)

也就是将问题(机外表示、处理要求)->数学模型(逻辑结构、基本操作)

而这一步正是我们数据结构所干的事。

终上所述,我们大概知道了数据结构是将现实(非数值数据)问题转化为计算机语言的表示,让计算机去处理它。我们学习数据结构其实就是在学习这种思想,需要我们一定的逻辑思维跟抽象能力。

2.什么是数据结构

书上的定义

数据结构是指按照一定的逻辑结构构成的一组数据,使用某种存储结构将这批数据存储于计算机中,并在这些数据上定义一个运算集合。

而作为专业课,数据结构是一门研究非数值的程序设计中计算机的操作对象以及它们之间的关系和操作的学科。

3.数据结构要学习什么?

通过前两个问题,我们大概了解到

数据结构讨论的是数据的逻辑结构,存储方式以及相关的操作。

所以我们之后的学习的方向就是围绕着这三面进行的

但是在学习这三面之前,我们对数据有个清楚的概念

数据概念

细分为以下这五个方面

  • 数据
  • 数据项
  • 数据元素
  • 数据对象
  • 数据类型

数据:

数据是信息的载体,是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据不仅仅包括整形、实型等数值类型,还包括字符及声音、图像、视频等非数值类型。

数据项:

构成数据元素不可分割的最小单位

数据元素:

1.是数据的基本单位,在计算机程序中通常作为一个整体考虑而处理

2.也被称为元素,或称为记录,结点或顶点。

3.一个数据元素可由若干个数据项组成

数据对象:

是性质相同的数据元素的集合,是数据的一个子集。

列如:

整数数据对象是集合N={-1,0,1,23,4..}

人员表也可看做一个数据结构

它们四个之间的关系 数据>=数据对象>数据元素>=数据项

数据、数据元素、数据项、数据对象的实例介绍

下面是举个实例给大家:

假设有两张表,A表为人员表,B表为课程表, 表的格式如下:

姓名 性别 身高 课程代号
小明 180 A
小红 180 A
小绿 180 B
课程代号 课程名
A 语文
B 数学

重点:

这两张表就是数据
而单独的一张表就称为数据对象,即人员表是一个数据对象,课程表也是一个数据对象
而每张表中的每一行就称为数据元素
而姓名,性别,身高,课程代号,课程名就称为数据项

数据类型

数据类型是一个值的集合和定义在此集合上的一组操作的总称

分类

原子类型:其值不可再分的数据类型

结构类型:其值可以再分解为若干成分(分量)的数据类型

抽象数据类型:抽象数据组织及相关的操作,能将数据的逻辑结构及运算在计算机上具体实现。

了解完数据的基本概念,我们便可以开始进入正题

数据结构讨论的是数据的逻辑结构,存储方式以及相关操作。

我们就可以从数据结构的这基本三要素下手

  • 数据的逻辑结构
  • 数据的存储结构
  • 数据的运算集合

逻辑结构

描述数据元素之间的逻辑关系

与数据的存储无关,独立于计算机

是从具体问题抽象出来的数学模型

存储结构(物理结构)

数据元素及其在计算机存储器中的存储方式(结构)又称映像,也称物理结构

是数据元素和关系的表示

存储结构是用于计算机语言实现的逻辑结构,它依赖于计算机语言

有序地组织计算机进行存储

逻辑结构与存储结构的关系

存储结构是逻辑关系的映像与元素本身的映身。

逻辑结构是物理结构的抽象,存储结构是数据结构的实现

两者综合起来建立了数据元素之间的关系

逻辑结构的两种分类划分方式:

划分一:

  1. 线性结构

有且仅有一个开始和一个终端结点,并且所有结点都最多只有一个直前趋和一个直接后继。

例如:线性表、栈(特殊线性表)、队列(特殊线性表)、字符串,数组,广义表

   2.非线性结构

一个结点可能有多个直接前趋和直接后继

例如:树,图

 划分二:

集合结构:集合中的元素除了同属于一个集合之外,没有其他关系
线性结构:线性结构中的数据元素之间是一对一的关系
树形结构:树形结构中的数据元素之间是一对多的层次关系
图形结构:图形结构中的数据元素之间是多对多的关系

存储结构(物理结构)

1.顺序存储结构

用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置

来表示。

c语言中用数组来实现顺序存储结构

2.链式存储结构

用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示。

C语言中用指针来实现链式存储结构

3、索引存储

索引存储方式是采用附加的索引表的方式来存储节点信息的一种存储方式。索引表由若干索引项组成。索引存储方式中索引项的一般形式为(关键字、地址)。其中,关键字是能够唯一标识一个节点的数据项。索引存储方式还可以细分为稠密索引:这种方式中每个节点在索引表中都有一个索引项,其中索引项的地址知识节点所在的存储位置。稀疏索引:这种方式中一组节点在索引表中只对应一个索引项。其中,索引项的地址指示一组节点的起始存储位置。

4、散列存储

散列存储方式是根据节点的关键字直接计算出该节点的存储地址的一种存储方式。在实际应用中,往往需要根据具体的数据结构来决定采用哪种存储方式。同一逻辑结构采用不同的存储方法,可以得到不同的存储结构。而且者4中基本存储方法,既可以单独使用,也可以组合起来对数据结构进行存储描述。

数据的运算

施加在数据上的运算包括运算的定义和实现

运算的定义是针对逻辑结构的,指出运算的功能

运算的实现是针对存储结构的,指出运算的具体操作步骤

包括:检索,排序、插入、删除、修改

数据结构入门学习之数据结构学些什么?相关推荐

  1. Python学习教程(Python学习视频_Python学些路线):Day05 总结和练习

    Python学习教程(Python学习视频_Python学些路线):总结和练习 练习清单 寻找"水仙花数". 寻找"完美数". "百钱百鸡" ...

  2. 【数据结构入门篇】数据结构与算法同我一起从入门开始,到入土为止

    前言 这一篇的发布就意味着我的数据结构专栏开始更新了,从最基础的开始入门,之后按顺序把每一个该学习的知识都总结一遍,复习巩固. 无论你是学过了还是准备开始学习,都可以一起.学过了你可以复习巩固,没学过 ...

  3. python入门学习基础数据结构与语法

    python命令行模式:我们cmd打开命令行窗口就是了.当我们输入python,就进入了python交互模式,输入exit(),就退出了交互模式,在命令行模式可以运行.py程序.如下所示 C:\Use ...

  4. 数据结构入门学习笔记-1

    一.用计算机解决问题的步骤: 1.抽象出合适的数学模型 2.设计解决模型算法 3.编程,测试. 二.数值问题(可用数学方程解决)和非数值问题 数值问题比如:求解梁的受力:人口预测等: 非数值问题:图书 ...

  5. 四大金刚 数据结构_学习JavaScript数据结构与算法(三):集合

    集合(Set遇新是直朋能到) 说起集合,就想起刚进高中时,数学第一课讲的就是集合.因此在学习集合这种数据结构时,倍感亲切. 集合的基本性质有一条: 集合中元素是不重复的.因为这种性质,所以我们选用了对 ...

  6. python入门学习[看漫画学Python:有趣、有料、好玩、好用读书笔记]

    写在前面:本文中绝大多数图片来源于图书:看漫画学Python:有趣.有料.好玩.好用,本文仅供个人学习使用,如有侵权,请联系删除. 学习编程语言最好的方式就是多写,多写,多写!!!哪有什么快速掌握,能 ...

  7. 新手如何学习算法?算法如何入门以及零基础入门算法应该学些什么?

    搬运工,看到一篇关于算法学习之路的总结,希望对你有帮助. 原文链接:zh.lucida.me/blog/on-le 我的算法学习之路 MAY 4TH, 2014 | COMMENTS  关于 严格来说 ...

  8. 新手收入学习算法?算法如何入门以及零基础入门算法应该学些什么?学习路线是什么...

    作者:周末 链接:https://www.zhihu.com/question/27984119/answer/39116336 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...

  9. 数据结构入门(一级)

    数据结构和算法的入门:在这里我们先回答大家三个问题1. 为什么要学习数据结构2. 有哪些数据结构3. 学习数据结构的四种境界知道了这三个问题之后呢,再来进行具体内容的一个学习,先看第一个,为什么要学些 ...

最新文章

  1. oracle 被另一用户锁定,Oracle报错记录被另外一个用户锁定的解决方案
  2. java6_64.tar配置_centos6.5_64 java 环境变量配置
  3. excluded by a filter_A. Manthiram:碲入硫,锂更稳!
  4. java nio详解,Java NIO API详解
  5. android 崩溃捕获_Android使用FileProvider捕获图像相机图库
  6. 爬虫伪装请求头-fake-useragent
  7. 数理统计期末复习知识点总结(一)
  8. picasa csdn_前5名:Picasa的开源替代品,SourceForge / Slashdot采访等
  9. 对于程序员头发的认识
  10. linux运行崩溃怎么定位,Linux 程序崩溃定位
  11. [ERROR] [MY-012576] [InnoDB] Unable to create temporary file; errno: 30
  12. windos无法对计算机进行,电脑提示windows无法完成格式化如何解决
  13. 用Cython加密Python代码这么简单
  14. 微信公众平台订阅号、服务号和企业号三者之间的区别与联系
  15. 大型开源车牌数据集CCPD及私有车牌数据集介绍
  16. 目前软搭建测试的行业现状和前景
  17. 三个思维结构:黄金圈法则、金字塔结构、PREP结构
  18. SAP 启动物料帐后不可更改物料价格的处理方法
  19. Linux 状态命令之 sar
  20. 关于达内培训的名企定制班

热门文章

  1. 测试网速_手机网速测试排名出炉,华为表现意外,中兴才是王者
  2. Elasticsearch 8.0报错:received plaintext http traffic on an https channel, closing connection
  3. 计算机视觉课程第四讲-OpenCV4钢管检测项目下集:霍夫圆检测理论与实践
  4. 常见PCB表面处理工艺及比较
  5. 华为rs能不能用鸿蒙系统,mate40Pro和40RS能用上鸿蒙系统吗
  6. 西宁盲人辅助计算机,青海西宁百名盲友齐聚一堂共迎国际盲人节
  7. 计算机三级数据库技术自学第二节课
  8. 1039: n个数求和 C语言
  9. 重走长征路---OI每周刷题记录---1月11日 2014
  10. 移动端手写签名实现 (jSignature.js)