堆栈的数据结构

  无论是堆, 还是栈,都是一种数据结构, 不过因为各自的特性不同, 所以有不同的应用.

堆内存:

首先,堆是一个运行时数据区,是一种完全二叉树结构 , 通过new等指令创建的对象, 句柄存在于栈中,实体都存在于堆中. 所谓的完全二叉树:即是除了最后一层节点以及其父节点外, 其他的节点都是满树的状态,  且对最后一层的节点 也有要求, 即使没有全满, 该层的所有节点也都全部靠左. 而完全二叉树结构 是一种效率相对很高的一种数据结构, 所以堆结构 在数据处理方面具有很大的优势.

总结: 在内存中,对堆区间, 可动态分配内存大小,生存周期也不必事先告诉编译器,Java垃圾回收自动回收不需要的数据;在数据处理方便 是效率很高的一种数据结构.

栈内存:

栈(stack)又名堆栈,它是一种先进后出(FILO)的线性表结构, 可以把这种结构想象成一个口朝上的桶结构, 桶口被称为栈顶 , 桶底, 被称为栈底 , 而当向桶内装东西(数据)的时候, 先装的数据反而在底层,   当从桶内拿东西的时候, 只能先拿离桶口最近的, 这就形成了栈的FILO 的特殊结构,  存数据的动作,被称作 压栈(底) , 取数据动作, 被称作 弹栈 .

栈结构 往往和队列结构相比较, 因为他们是两个完全相反的,数据存取顺序, 队列秉行的是先进先出(FIFO)的模式,  顾名思义,可以把它想象成一个隧道,  第一个进入入口, 也会第一个走出出口.   linkList的集合,被称为万能集合, 既可以模拟出 栈结构, 也可以模拟出队列结构 , 具体的模拟方案, 网上很多, 我就不再赘述了, 喜欢底层结构的可以搜集 研究下, 对理解这两种数据结构会有很大的帮助. 

总结: 在内存中 , 栈结构主要用来储存 句柄和成员方法,  具有数据共享的特性.  在数据存储方面, 栈的存取速度极快 , 效率在 堆结构和寄存器之间,  但是 栈结构也有自己限制, 存储的数据在存储的同时,数据的大小,和生存周期必须确定 , 这就对其内部存储的数据的应用 产生了极大的限制 , 缺乏灵活性. 

堆栈数据结构, 各有千秋, 大家也可以根据实际的开发场景, 优化选择.


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值