文章目录

  • 1. 栈和队列
    • 1.1 定义
    • 1.2 区别
    • 1.3 常见笔试题
  • 2. 栈和堆
    • 2.1 栈内存
    • 2.2 堆内存
    • 2.3 区别

1. 栈和队列

1.1 定义

栈(Stack):是限定能在表的一端进行插入和删除操作的线性表
队列(Queue):是限定只能在表的一端进行插入和另一端删除操作的线性表

1.2 区别

栈和队列的区别:
(1)栈的插入和删除操作都是在一端进行的,而队列的操作却是在两端进行的;
(2)栈是先进后出,队列是先进先出;
(3)栈只允许在表尾一端进行插入和删除,队列只允许在表尾一端进行插入,在表头一端进行删除。

1.3 常见笔试题

一个栈的入栈序列是abcde,则栈的不可能的输出序列是( C )
A.edcba
B.decba
C.dceab
D.abcde
解析:堆栈讲究先进后出,后进先出。
选项A:abcde先入栈,然后依次出栈,正好是edcba;
选项B:abcd先依次入栈,然后d出栈,e再入栈,e出栈,最后cba依次出栈;
选项C:错误;
选项D:a入栈,然后a出栈;b再入栈,b出栈……依此类推。

2. 栈和堆

2.1 栈内存

  • 栈内存首先是一片内存区域,存储的都是局部变量;
  • 凡是定义在方法中的都是局部变量(方法外的是全局变量),for循环内部定义的也是局部变量,是先加载函数才能进行局部变量的定义,所以方法先进栈,然后再定义变量;
  • 变量有自己的作用域,一旦离开作用域,变量就会被释放;
  • 栈内存的更新速度很快,因为局部变量的生命周期都很短。

2.2 堆内存

  • 存储的是数组和对象(其实数组就是对象),凡是new建立的都是在堆中;
  • 堆中存放的都是实体(对象),实体用于封装数据,而且是封装多个(实体的多个属性),如果一个数据消失,这个实体也没有消失,还可以用,所以堆是不会随时释放的;
  • 但是栈不一样,栈里存放的都是单个变量,变量被释放了,那就没有了。堆里的实体虽然不会被释放,但是会被当成垃圾,Java有垃圾回收机制不定时的收取。

2.3 区别

栈和堆的区别:
(1)栈内存存储的是局部变量而堆内存存储的是实体;
(2)栈内存的更新速度要快于堆内存,因为局部变量的生命周期很短;
(3)栈内存存放的变量生命周期一旦结束就会被释放,而堆内存存放的实体会被垃圾回收机制不定时的回收。

JavaSE(二十一)——栈和队列、栈和堆相关推荐

  1. 实现if_数组实现固定栈和队列+栈与队列相互实现

    文章目录 一.数组实现固定栈和队列 1.数组实现固定栈 2.数组实现固定队列 二.栈与队列相互实现 1.两个队列实现栈 2.两个栈实现队列 一.数组实现固定栈和队列 1.数组实现固定栈 代码如下: c ...

  2. 从无到有算法养成篇-栈和队列·栈

    一.栈结构示意图 二.栈的常规操作 1.定义一个栈结构 /* 顺序栈结构 */ typedef struct {SElemType data[MAXSIZE];int top; /* 用于栈顶指针 * ...

  3. 数据结构与算法(C语言) | 栈和队列——栈(自己做过测试)

    栈是一种重要的线性结构,通常称,栈和队列是限定插入和删除只能在表的"端点"进行的线性表.(后进先出) –栈的元素必须"后进先出". –栈的操作只能在这个线性表的 ...

  4. 【二十一】Python全栈之路--构造方法_继承_登录注册

    文章目录 1. 构造方法__init__ 2. 单继承_多继承 2.1 单继承 2.2 多继承 3. super的深度理解 4. 注册_登录 4.1 注册 4.2 登录 5. 小练习 1. 构造方法_ ...

  5. 第三章:3.栈和队列 -- 栈与递归的实现

    前言: 栈还有一个总要应用是在程序设计语言中实现递归.一个直接调用自己或通过一系列的调用语句间接地调用自己的函数,称作递归函数. 目录: 1.栈 2.栈的应用举例 3.栈与递归的实现 4.队列 5.离 ...

  6. 数据结构笔记(二) 栈和队列(C语言描述)

    数据结构(二) 栈和队列 栈 顺序栈 存储结构 #define MAXSIZE 50 #define SElemType int typedef struct{SElemType *top;SElem ...

  7. 左神算法课笔记(二):链表、栈和队列、递归Master公式、哈希表、有序表

    单向链表 双向链表 单链表.双链表最简单的面试题 1.单链表和双链表如何反转 package class02;import java.util.ArrayList;public class Code0 ...

  8. 简单数据结构(队列 栈 树 堆 )

    基础知识 基本概念 程序 = 算法 + 数据结构数据结构是计算机存储.组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.通常情况下,精心选择的数据结构可以带来更高的运行或者存 ...

  9. 算法题复习(栈与队列、二叉树)

    目录 栈与队列 栈用于匹配的问题 队列用于堆 二叉树系列 深度遍历,递归与迭代 层序遍历 二叉树属性 二叉树修改与构造 二叉搜索树 公共祖先 二叉搜索树的修改与构造 栈与队列 栈用于匹配的问题 20. ...

最新文章

  1. 1亿组图文对,填补中文开源多模态数据集空白!还附带基础模型,来自华为诺亚方舟实验室...
  2. C# 学习笔记(6) 多态
  3. 软件开发所需要的十三个文档
  4. Seven Kinds of Testers - 七种类型的测试
  5. react实现异步插件_初识react(四) react中异步解决方案之 redux-saga
  6. 如何注册海外邮箱?如何进行邮箱注册163,这些技巧交给你
  7. 网络资源大搜索(转)
  8. ExoPlayer播放器剖析(一)进入ExoPlayer的世界
  9. 垃圾收集算法,垃圾收集器_实时垃圾收集
  10. 【期末复习】计算机组成原理 袁春风
  11. 【第4天】尊重是最有力的征服
  12. 微信官方支付接口配置教程
  13. postfix 邮箱设置及常见错误
  14. 如何将已有图片做成透明水印_如何用Photoshop在图片上添加透明水印?
  15. windows自带截图键(shift+ win + s)没有反应,一招教你快速解决!
  16. 浅析Win2K/XP服务与后门技术
  17. matlab error 15,为什么我遇到了“License Manager Error -15”的错误?
  18. Jenkins流水线配置
  19. 使用Go构建区块链 第2部分:工作量证明
  20. sql2000企业版安装

热门文章

  1. Data Mining的十种分析方法
  2. 2017年10月21日普及组 简单单词
  3. everything文件搜索_Everything,闪电搜索,百万文件100%秒搜,真是文件搜索神器!...
  4. redis 哨兵_docker里创建redis哨兵
  5. C# 委托 (一)—— 委托、 泛型委托与Lambda表达式
  6. .Net 多线程 异步编程 Await、Async和Task
  7. mint ui datetimepicker 手机端jquery datetimepicker 总结应用
  8. EF 学习 实用脚本
  9. WARNING: The host '$hostname' could not be looked up with resolveip. (转)
  10. 关系数据 规范化的理解