前端基本的数据结构
- 0.js数据类型
- 0.1 堆栈空间分配区别:
- 0.2 堆栈缓存方式区别:
- 0.3 堆 、栈数据结构区别:
- 1.0 数据结构分类
- 1.1 逻辑结构:
- 1.2 存储结构:
- 2.0 数据结构案例
0.js数据类型
基本类型(栈 stack) :
Number、String 、Boolean、Null 和 Undefined , Symbol(es6 新增);
基本数据类型是按值访问 由高向低分配,栈内存最大是 8MB,(超出报栈溢出), String:是特殊的栈内存 (向高分配大小不定),程序员分配
引用类型(堆 heap) :
Object 、Array 、Function 、Data;引用类型数据在栈内存中保存的实际上是对象在堆内存中的引用地址(指针),向高分配,系统自动分配
0.1 堆栈空间分配区别:
- 栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;
- 堆(操作系统): 一般由程序员分配释放,若程序员不释放,程序结束时可能由 OS 回收,分配方式倒是类似于链表。
0.2 堆栈缓存方式区别:
- 栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放;
- 堆是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。
0.3 堆 、栈数据结构区别:
数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成;数据结构的基本操作的设置的最重要的准则是,实现应用程序与存储结构的独立
(数据结构=数据的存储+算法)
1.0 数据结构分类
- 逻辑结构:反映数据之间的逻辑关系;
- 存储结构:数据结构在计算机中的表示;
1.1 逻辑结构:
- 集合:结构中的数据元素除了同属于一种类型外,别无其它关系。(无逻辑关系)
- 线性结构 :数据元素之间一对一的关系(线性表)
- 树形结构 :数据元素之间一对多的关系(非线性)
- 图状结构或网状结构: 结构中的数据元素之间存在多对多的关系(非线性)
1.2 存储结构:
- 顺序存储数据结构
- 链式存储数据结构
- 索引存储数据结构
- 散列存储数据结构
2.0 数据结构案例