JavaSE(二十一)——栈和队列、栈和堆
文章目录
- 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(二十一)——栈和队列、栈和堆相关推荐
- 实现if_数组实现固定栈和队列+栈与队列相互实现
文章目录 一.数组实现固定栈和队列 1.数组实现固定栈 2.数组实现固定队列 二.栈与队列相互实现 1.两个队列实现栈 2.两个栈实现队列 一.数组实现固定栈和队列 1.数组实现固定栈 代码如下: c ...
- 从无到有算法养成篇-栈和队列·栈
一.栈结构示意图 二.栈的常规操作 1.定义一个栈结构 /* 顺序栈结构 */ typedef struct {SElemType data[MAXSIZE];int top; /* 用于栈顶指针 * ...
- 数据结构与算法(C语言) | 栈和队列——栈(自己做过测试)
栈是一种重要的线性结构,通常称,栈和队列是限定插入和删除只能在表的"端点"进行的线性表.(后进先出) –栈的元素必须"后进先出". –栈的操作只能在这个线性表的 ...
- 【二十一】Python全栈之路--构造方法_继承_登录注册
文章目录 1. 构造方法__init__ 2. 单继承_多继承 2.1 单继承 2.2 多继承 3. super的深度理解 4. 注册_登录 4.1 注册 4.2 登录 5. 小练习 1. 构造方法_ ...
- 第三章:3.栈和队列 -- 栈与递归的实现
前言: 栈还有一个总要应用是在程序设计语言中实现递归.一个直接调用自己或通过一系列的调用语句间接地调用自己的函数,称作递归函数. 目录: 1.栈 2.栈的应用举例 3.栈与递归的实现 4.队列 5.离 ...
- 数据结构笔记(二) 栈和队列(C语言描述)
数据结构(二) 栈和队列 栈 顺序栈 存储结构 #define MAXSIZE 50 #define SElemType int typedef struct{SElemType *top;SElem ...
- 左神算法课笔记(二):链表、栈和队列、递归Master公式、哈希表、有序表
单向链表 双向链表 单链表.双链表最简单的面试题 1.单链表和双链表如何反转 package class02;import java.util.ArrayList;public class Code0 ...
- 简单数据结构(队列 栈 树 堆 )
基础知识 基本概念 程序 = 算法 + 数据结构数据结构是计算机存储.组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.通常情况下,精心选择的数据结构可以带来更高的运行或者存 ...
- 算法题复习(栈与队列、二叉树)
目录 栈与队列 栈用于匹配的问题 队列用于堆 二叉树系列 深度遍历,递归与迭代 层序遍历 二叉树属性 二叉树修改与构造 二叉搜索树 公共祖先 二叉搜索树的修改与构造 栈与队列 栈用于匹配的问题 20. ...
最新文章
- 1亿组图文对,填补中文开源多模态数据集空白!还附带基础模型,来自华为诺亚方舟实验室...
- C# 学习笔记(6) 多态
- 软件开发所需要的十三个文档
- Seven Kinds of Testers - 七种类型的测试
- react实现异步插件_初识react(四) react中异步解决方案之 redux-saga
- 如何注册海外邮箱?如何进行邮箱注册163,这些技巧交给你
- 网络资源大搜索(转)
- ExoPlayer播放器剖析(一)进入ExoPlayer的世界
- 垃圾收集算法,垃圾收集器_实时垃圾收集
- 【期末复习】计算机组成原理 袁春风
- 【第4天】尊重是最有力的征服
- 微信官方支付接口配置教程
- postfix 邮箱设置及常见错误
- 如何将已有图片做成透明水印_如何用Photoshop在图片上添加透明水印?
- windows自带截图键(shift+ win + s)没有反应,一招教你快速解决!
- 浅析Win2K/XP服务与后门技术
- matlab error 15,为什么我遇到了“License Manager Error -15”的错误?
- Jenkins流水线配置
- 使用Go构建区块链 第2部分:工作量证明
- sql2000企业版安装
热门文章
- Data Mining的十种分析方法
- 2017年10月21日普及组 简单单词
- everything文件搜索_Everything,闪电搜索,百万文件100%秒搜,真是文件搜索神器!...
- redis 哨兵_docker里创建redis哨兵
- C# 委托 (一)—— 委托、 泛型委托与Lambda表达式
- .Net 多线程 异步编程 Await、Async和Task
- mint ui datetimepicker 手机端jquery datetimepicker 总结应用
- EF 学习 实用脚本
- WARNING: The host '$hostname' could not be looked up with resolveip. (转)
- 关系数据 规范化的理解