数据结构(一)之基础知识

学习数据结构主要源于如下缘由:javascript

  在工做中我是用meteor在作项目,先后台都要写,服务端是用的node。以前有和同事作过一个邮箱功能,性能测试时并发量一高就发送失败。我认为处理并发量的问题应该须要数据结构与算法和设计模式这三点来优化。这是往大了说,细说就是工做中,功能每次都是加班超快赶,在多人合做下,若是代码结构与逻辑混乱,后期维护困难,功能很差扩展。因为咱们组都是前端人员接下这个项目,对于数据库的设计经验缺少,才一再出现性能问题,因此我认为学习数据结构与算法尤其重要。本人也是正在学习中,有问题欢迎你们指正。前端

  第一篇笔记先说说数据结构的基础:java

  一·术语:node

    1.数据:描述客观事物的符号,是计算机中能够操做的对象,能被计算机识别,并输入给计算机处理的符号集号。我的理解就好像变量同样。 算法

    2.数据元素:是组成数据的,有必定意义的基本单位,在计算机中一般做为总体处理。也被称为记录。好比人类的数据元素是人。重点在于总体数据库

    3.数据项:一个数据元素能够由若干个数据项组成,重点在于单个,是不可分割的最小单位。好比:一个person集合(数据元素)由'name','age'(数据项)来组成。设计模式

    4.数据结构:不一样数据元素之间不是独立的,相互之间存在一种或多种特定关系的数据元素的集合。 数据结构

  二.数据的逻辑结构与物理结构:并发

    1.逻辑结构分为集合结构,线性结构,树形结构,图形结构性能

    (1)集合结构:数据元素除了同属一个集合外,没有其余关系,元素之间是'平等'关系。

  

集合结构示例图

    (2)线性结构:线性结构中的元素存在一对一的关系

线性结构示例图

    (3) 树形结构:树形结构中的数据存在一对多的层次关系,咱们经常使用的二叉树结构就是树形结构中的一种

 

树形结构示例图

    (4)图形结构:图形结构的数据元素是多对多的关系

图形结构示例图

    注:通常在设计一个数据结构时,咱们习惯将数据元素看作一个结点,用圆表示。元素之间的逻辑关系用连线表示,若是有方向的,能够用带箭头的连线表示。

     2.物理结构:是指数据的逻辑结构在计算机中的存储形式。这里主要指内存,像硬盘,软盘主要用文件结结来描述。

    (1)顺序存储:把数据元素存在地址连续的存储单元里

 顺序存储结构示例图

    (2)链式存储:是把数据元素存放在任意的存储单元里,这组存储单元能够是连续的,也能够是不连续的。数据在哪不要紧,只要指针存放相应的地址知道下一个就到你了就行。

链式存储结构示例图

  三.抽象数据类型

    1.数据类型:是指一组性质相同的值的集合及定义在此集合上的一些操做的总称。好比在javascript中有number,string,boolean,null,undefined,object

    2.抽象数据类型:是指一个数学模型及定义在该模型上的一组操做。好比在数学的坐标轴中,有(x,y)也有(x,y,z),那么咱们能够定义一个轴象数据类型point。

 

  总结:本篇主要介绍数据结构中的一些术语,虽然都是些概念,不是很好理解,但在以后的学习中结合一些练习与应用,会帮助咱们理解。下一篇将介绍一下算法的基础知识,数据结构的学习离不开算法。二者相结合才能体现彼此的优势,发挥正真的做用。个人学习主要参考《大话数据结构》《算法》《数据结构》,你们能够去了解。

相关文章
相关标签/搜索