堆栈知识点--数据结构与算法之美

堆栈

1. 栈是一种操作受限的线性表,只能允许在一端进行插入和删除。

2. 栈既可以通过数组实现,也可以通过链表实现,主要是限制数据的插入和删除

3. 栈的一些应用,在写计算器的时候,求出逆波兰式,存入两个栈中进行计算,在编译原理中通过栈来存放字符串,匹配括号

4. 内存中的堆栈和数据结构堆栈不是一个概念,可以说内存中的堆栈是真实存在的物理区,数据结构中的堆栈是抽象的数据存储结构。

5.内存空间在逻辑上分为三部分:代码区、静态数据区和动态数据区,动态数据区又分为栈区和堆区。

代码区:存储方法体的二进制代码。高级调度(作业调度)、中级调度(内存调度)、低级调度(进程调度)控制代码区执行代码的切换。

静态数据区:存储全局变量、静态变量、常量,常量包括final修饰的常量和String常量。系统自动分配和回收。

栈区:存储运行方法的形参、局部变量、返回值。由系统自动分配和回收。

堆区:new一个对象的引用或地址存储在栈区,指向该对象存储在堆区中的真实数据。

猜你喜欢

转载自blog.csdn.net/weixin_40693859/article/details/86763621