数据结构与算法之绪论

更新日期: 2019-10-30阅读: 2.3k标签: 数据结构

什么是数据结构

简单来说可以解释为:程序设计=数据结构+算法;

主要是用来研究数据结构的关系,数据元素之间存在的一种或多种特定关系的集合;

 

数据结构的分类

按照传统意义上来讲,数据结构可以分为两类:逻辑结构和物理结构;

逻辑结构指的是数据对象中数据元素之间的相互关系。

主要有四种逻辑结构:

  1. 集合结构:集合结构中的数据元素同属于一个集合体中,但是它们之间没有其他关联;
  2. 线性结构:线性结构中的数据元素之间是一对一的关系,如同夫妻关系;
  3. 树形结构:树形结构中的数据元素之间是一对多的关系,如同一个爸爸对多个自己的孩子;
  4. 图形结构:图形结构中的数据元素之间是多对多的关系,我更倾向于把它理解成一个网状结构,如同在社会中人与人之间都是相互关联的;

 

物理结构的存储

物理结构中的存储器主要是针对内存而言的,硬盘、软盘、光盘等外部存储器的数据组织通常用文件结构来描述;

数据元素的存储形式有两种:顺序存储和链式存储。

  1. 顺序存储结构是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的(编程语言的数据结构就是属于这种);
  2. 链式存储结构是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的;它比顺序存储更灵活(类似银行排号办理业务),但是不能反应其逻辑关系,所以需要用一个指针存放数据元素的地址(指针指向的是下一个地址)—通过地址就可以找到相关联数据元素的位置

 

链接: https://fly63.com/article/detial/6676

数据结构有哪几种?

据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。包括三个组成成分:数据的逻辑结构、物理结构(存储结构)、数据运算结构。

为什么我认为数据结构与算法对前端开发很重要?

一个具有层级结构的数据,实现这个功能非常容易,因为这个结构和组件的结构是一致的,递归遍历就可以了。但是,由于后端通常采用的是关系型数据库,所以返回的数据通常会是这个样子:前端这边想要将数据转换一下其实也不难,因为要合并重复项

JS中数据结构之链表

数组不总是组织数据的最佳数据结构,在很多编程语言中,数组的长度是固定的,所以当数组已被数据填满时,再要加入新的元素就会非常困难。在数组中,添加和删除元素也很麻烦,因为需要将数组中的其他元素向前或向后平移。

JS中数据结构之图

图由边的集合及顶点的集合组成。边是有方向的是有序图(有向图),否则就是无序图(无向图)。图中的一系列顶点构成路径,路径中所有的顶点都由边连接。路径的长度用路径中第一个顶点到最后一个顶点之间边的数量表示。

ES6中的Set数据结构以及使用使用场景

Set 是ES6提供的一种新的数据结构,它允许你存储任何类型的唯一值,而且Set中的元素是唯一的。我们用new操作符来生成一个Set对象,set结构的实例有以下属性

JS数据结构与算法_链表

链表更加像是数组。链表和数组都是用于存储有序元素的集合,但有几点大不相同,链表的实现不像之前介绍的栈和队列一般依赖于数组(至少我们目前是这样实现的),它必须自己构建类并组织逻辑实现。我们先创建一个Node类

JS数据结构与算法_集合&字典

集合set是一种包含不同元素的数据结构。集合中的元素成为成员。集合的两个最重要特性是:集合中的成员是无序的;集合中不允许相同成员存在,计算机中的集合与数学中集合的概念相同,有一些概念我们必须知晓:

JS数据结构与算法_树

一个树结构包含一系列存在父子关系的节点。每个节点都有一个父节点(除了顶部的第一个节点)以及零个或多个子节点:关于数的深度和高度的问题,不同的教材有不同的说法

JavaScript数据结构与算法-String

给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。主要就是用到了数组的 split 、 reverse 、 join 、 map 方法,原理:就是把字符串变成数组

链表!比数组更适合做增删操作的数据结构

链表和数组的对比:在大多数语言中,数组的大小是固定的,从数组的起点或中间添加或删除元素的成本很高,因为需要移动元素,链表中的每一个元素在内存中不是连续放置的,和它左右两侧元素是没有关系的

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!