栈(stack)的三种含义
含义一:数据结构 stack的第一种含义是一组数据的存放方式,特点为LIFO,即后进先出(Last in, first out)。
含义二:代码运行方式 stack的第二种含义是"调用栈"(call stack),表示函数或子例程像堆积木一样存放,以实现层层调用。
含义三:内存区域 stack的第三种含义是存放数据的一种内存区域。程序运行的时候,需要内存空间存放数据。一般来说,系统会划分出两种不同的内存空间:一种叫做stack(栈),另一种叫做heap(堆)。
数据结构是计算机存储、组织数据的方式 ,
栈和队列的实现可以用顺序存储结构或链式存储结构.
顺序存储结构:顺序支持随机存取,方便操作
链式存储结构:本质上就是一个链表,插入和删除上,链式的要比顺序的方便
堆(heap),栈(stack)与队列(queue)
堆(heap) 堆数据结构
堆数据结构是一种树状结构。它的存取数据的方式,则与书架与书非常相似,将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。一般由程序员分配释放, 若程序员不释放,程序结束时可能被回收,分配方式倒是类似于链表。堆则是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。
引用类型是保存在堆内存中的对象
栈(stack) 又名堆栈
类似乒乓球桶,先进后出,后进先出,由操作系统自动分配释放 ,一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放。
基本类型是保存在栈内存中的简单数据段,它们的值都有固定的大小,保存在栈空间,通过按值访问,JavaScript中有6种基础数据类型,分别是Undefined、Null、Boolean、Number、String,Symbol
队列
队列是一种先进先出(FIFO)的数据结构。正如排队过安检一样,排在队伍前面的人一定是最先过检的人。用以下的图示可以清楚的理解队列的原理。