javascript数据结构浅析(理论篇)

什么是数据结构?

在计算机科学中,数据结构(英语:data structure)是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。数据结构起源于程序设计,它不是使我们怎么学会编码,而是为我们提供一种编程思想,具有更好的思路。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。

数据结构能做什么?

  • 有效的管理数据对象
  • 提升运算性能
  • 面(ya)试(si)加(mian)分(shi)项(guan)

数据结构的概念定义

数据:

  • 数据:是用来描述一种客观事物的符号(字符串、数字、json、声音、图片...)
  • 数据元素:有一定意义的最基本的单位,当我们使用计算机来处理数据的时候,数据元素通常被我们用作一个整体来处理,这个整体又称记录
  • 数据对象:是指性质相同的数据元素的集合
  • 数据项:是组成数据的最小单位

结构:

数据元素相互之间的关系称之为结构。

结构又分两种:

  • 逻辑结构:指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关
  • 存储结构:指数据的逻辑结构在计算机存储空间的存放形式

所以,一种数据结构可表示成一种或多种存储结构

逻辑结构:

  • 集合:集合中的数据成员是无序的松散的关系,且每个数据成员在集合中不能重复
  • 线性结构:数据结构中的元素存在一对一的相互关系
  • 非线性结构:数据结构中的元素存在一对多或多对多的相互关系

存储结构:

  • 顺序存储:数组就是典型的顺序存储结构
  • 链式存储:链表采用的就是链式存储
  • 索引存储:索引存储的优点是检索速度快,但是需要增加附加的索引表,会占用较多的存储空间
  • 散列存储:散列存储使得检索、增加、删除节点的操作都很快,缺点是解决散列冲突会增加时间和空间的开销,常用的解决散列冲突的方法有开链法和线性探测法

常用的数据结构

数组:

一个存储元素的线性集合(collection),元素可以通过索引来任意存取,索引通常是数字,用来计算元素之间存储位置的偏移量。

列表:

人们日常生活中经常使用列表:待办事项列表、购物清单、十佳榜单、最后十名榜单等。

栈:

是一种高效的数据结构,因为数据只能在栈顶添加或删除,所以这样的操作很快,而且容易实现。

队列:

队列用于存储按顺序排列的数据,先进先出,这点和栈不一样

链表:

链表是由一组节点组成的集合。每个节点都使用一个对象的引用指向它的后继。指向另一个节点的引用叫做链


字典:

字典是一种以键- 值对形式存储数据的数据结构,就像电话号码簿里的名字和电话号码一样。

树:

树是计算机科学中经常用到的一种数据结构。树是一种非线性的数据结构,以分层的方式存储数据。
树被用来存储具有层级关系的数据,比如文件系统中的文件;树还被用来存储有序列表。

图:

图由边的集合及顶点的集合组成。


散列表:

散列是一种常用的数据存储技术,散列后的数据可以快速地插入或取用。散列使用的数据结构叫做散列表。

集合:

集合(set)是一种包含不同元素的数据结构。集合中的元素称为成员。
集合的两个最重要特性是:首先,集合中的成员是无序的;其次,集合中不允许相同成员存在。

常用的数据结构会在后续陆续逐个击破!

posted @ 2018-02-07 00:27  烁儿  阅读(...)  评论(...编辑  收藏