随着工作年限的增加,越来越觉的内功的重要性,所以我觉的应该回过头来再看一下计算机理论基础,巩固和增强一下自己的内功,所以我打算从数据结构开始看起。特在此记录自己的学习过程。
我打算以图解的形式记录这次学习过程,这样能够加深印象,也更容易理解。
好了,我们开始吧。
那么什么是数据结构呢?就是数据+结构,更抽象一点其实就是集合关系
涉及到数据相关的有如下几个概念:
数据:是描述客观世界的数字,字符以及一切能够输入到计算机中,并且能够被计算机程序处理的符号集合。
是计算机加工处理的”原料“,是信息的载体
例如整数,实数,复数等数值数据,字符,文字,图形,语音,视频等非数值数据
数据元素:是组成数据的,有一定意义的基本单位,也称为记录。
数据项:一个数据元素可以由若干个数据项组成。
数据对象:是性质相同的数据元素的集合,是数据的子集
结构:就是数据元素之间存在的某种联系,结构又分为逻辑结构和物理结构。逻辑结构:就是数据对象中数据元素之间的逻辑关系。物理结构:是数据的逻辑结构在计算机中的存储形式,分为顺序存储结构和链式存储结构
介绍完概念,下面我们以数据的处理过程为线索,并以图的形式来表示一下上述概念及关系
第一步:代表现实世界中未加功的原始数据,此时还不能给计算机使用
例如我们想在计算机里输出一串 "HelloWorld",这个串就是原始数据,
第二步:将原始数据进行加工,提取出相同数据元素的子集作为数据对象,准备给计算机使用
如果想让计算机显示"HelloWorld"我们就要考虑"HelloWorld"要如何表示的问题,此时数据对象就是字符串
第三步: 整理数据元素,组织数据项
提取出的数据元素就是'H' 'e' 'l' 'l' 'o' 'W' 'o' 'r' 'l' 'd',字符串数据对象就是这些字符的集合,有了数据元素,那么我们如何组织才能在计算机中顺序输出"HelloWorld"呢,这就涉及到了数据的结构,即关系
第四步:对数据元素进行逻辑结构的组织
因为考虑的是数据元素之间的关系,那么就有四种情况:
数据元素之间孤立的情况,即没有关系的情况,0-0
数据元素之间一对一的情况,即 1-1 这个是链表,数组,队列,栈,等情况
数据元素之间一对多的情况,即1-n,典型的是树型结构
数据元素之间多对多的情况,即n-n, 典型的是图的结构
第五步:对确定好逻辑结构的数据元素考虑相应的物理结构
确定好了数据元素之间的逻辑关系,那么如何在计算机中存储呢,数据元素间的关系,我们即可以顺序存储,又可以链式存储,选取哪个好呢?要看实际情况。这个后面都会说到。
第六步:对设计好的数据结构进行处理
数据元素,数据元素逻辑关系,数据元素物理结构都确定好了后,我们就开始对这个数据元素集合进行数据的处理了,那么我们如何处理这些数据元素呢,这就涉及到了算法
我们下节将先说一下算法的问题。
总结:数据结构的基本概念介绍完了,我们以后的学习过程都是按
提出问题---分析问题---提出解决方案---总结概念的思路进行