当前位置: 首页 > 后端技术 > Node.js

梦回前端系列-02数据结构篇

时间:2023-04-03 19:16:18 Node.js

每天关于梦回前端的一个重要知识点,以问答的形式逆向,利用碎片时间完成自我提升Day02数据结构篇说的是最近有很多朋友问我,前端有必要学数据结构和算法吗?先说说我的结论吧。很有必要,非常有必要,必须学习。程序员的基本功离不开数据结构和算法(如果你想一直做图片切图,可以忽略),精益求精离不开数据结构和算法(如果你只是想在我没做的时候完成需求)’说吧)高级进阶离不开数据结构和算法(如果你说工作两个月就回家继承亿万财产,无视)我看过一部电影《嫌疑人X的替身》play男二是数学天才,男一有一句台词“只要他想做,就没有他做不到的”,将这些基本理念体现在我们的日常生活中。什么是数据结构?我们为什么要使用数据结构?数据结构是计算机存储和组织数据的方式。数据结构是指相互之间具有一个或多个特定关系的数据元素的集合,精心选择的数据结构可以带来更高的运行或存储效率。数据结构是否经常与有效的检索算法和索引技术相关联?没关系,我们用白话翻译一下。在我们的大别墅里,有橱柜、衣柜、鞋柜。鞋柜放大门,衣柜放在卧室。这些是结构。合理的结构可以帮助我们以最小的成本实现目标。最优解的常用数据结构有哪些?数组(Array)是一种聚合数据类型,它是将多个相同类型的变量有序地组织在一起的集合。栈(Stack)是一种特殊的线性表,它只能在表的固定端进行数据节点的插入和删除。栈中存放数据的队列(Queue),一种特殊的线性表,按照后进先出的原则。与栈不同,队列只允许在表的一端进行插入操作,而在另一端进行删除操作。链表(LinkedList)是一种数据结构,数据元素以链式存储结构存储。物理上存在不连续的特征。树(Tree)是典型的非线性结构,它是一个包含2个节点的有限集K。在树结构中,只有一个根节点图(Graph),一种非线性数据结构。在图结构中,数据节点一般称为顶点,边是顶点的有序对堆(Heap),一种特殊的树型数据结构,一般讨论的堆就是二叉堆。堆的特点是根节点的值是所有节点中最小或最大的,根节点的两棵子树也是一个堆结构哈希表(Hash)。哈希表由哈希函数(Hashfunction)衍生而来,其思想是如果结构中存在关键字等于T的记录,那么必须在存储位置找到记录数组和链表的特征F(T)的?它们适用于哪些场景?以下由梦回前端会员@panda整理。因为数据是连续存储的,内存地址也是连续的,所以在查找数据的时候效率更高,但是在运行过程中不能根据自己的需要增减空间的大小。但是,当数据发生变化时,可能会出现越界的情况。当数据比较小时,可能会浪费内存空间。应用场景:数据比较小;经常执行的操作是通过序列号访问数据元素;数组更容易实现,任何高级语言都支持;构建的线性表比较稳定,链表只需要在使用时申请即可。内存空间可根据需要动态申请或删除,数据增删改查比数组应用场景更灵活:对于线性表,长度或规模难以估计;频繁的插入和删除操作;构造相对动态的线性表队列和栈的特点?它们适用于哪些场景?以下是梦回前端成员@panda组织的栈的特点:栈是一种线性存储结构,只能从表的一端访问数据,遵循“先进后出”的原则。表达式的括号匹配、迷宫求解、浏览器“回退”、基数转换等问题都具有先进后出的特点,需要在其中使用先进先出的乒乓盒栈结构的生活。球必须等待所有其他人从队列中出来。队列的特点:队列中数据的进出必须遵循“先进先出”的原则。应用场景:舞伴问题,操作系统进程,作业管理中的先进先出服务,字符序列是否回文由于先进先出的特性,需要使用先进先出-生活中的停车场是排队结构,后面的车要等前面的车全部开走。请简单描述一下你理解的树和图树(无向图)。它是一个图,图不一定是树。树是一对多的。多对多树有根节点。图里没有树,图可以递归。非根节点一定有父节点,图也不一定HashTable有什么特点?适用场景有哪些?萌晖前端成员@panda整理了以下特点:哈希算法可以将任意长度的数据哈希成固定长度的数据。速度快:Hash算法基本上就是异或和位移运算,速度非常快。不可逆:从哈希结果中很难找到哈希之前的字符串。低碰撞:存在Hash前输入不同,Hash后输出相同的情况,但大多数情况下,输入不同,输出不同。应用场景HashTable肯定会应用到数据库的实现中,是典型的字典模型。另外,Linux内核中也使用了HashTable。哈希表(hlist)用在很多场景,比如tasklet,页表维护等。最后,如果你想系统的学习前端并坚持下去,欢迎加入我们一起成长。扫码回复1,你不是一个人在战斗点击加入