文章 2024-06-27 来自:开发者社区

技术心得记录:堆(heap)与栈(stack)的区别

文章目录0.前言1.程序内存分区中的堆与栈1.1 栈简介1.2 堆简介1.3 堆与栈区别2.数据结构中的堆与栈2.1 栈简介2.2 堆简介2.2.1 堆的性质2.2.2 堆的基本操作2.2.3 堆操作实现2.2.4 堆的具体应用——堆排序0.前言堆(Heap)与栈(Stack)是开发人员必须面对的两个概念,在理解这两个概念时&...

文章 2023-11-17 来自:开发者社区

栈(stack)和队列(queue)

一、栈的概念栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。二、栈的实现栈的实现一般可以使用数组或者链表实现,相对而言数组的结构实现更优一些。因为数....

栈(stack)和队列(queue)
文章 2023-11-02 来自:开发者社区

栈折叠 (Stack Folding)

栈折叠 (Stack Folding) 是一种编程技巧,用于优化递归算法的性能。栈折叠可以将重复的子问题存储在一个栈中,避免重复计算,从而提高算法效率。使用栈折叠,可以将递归算法的重复计算部分存储在一个栈中,当遇到重复计算时,直接从栈中取出之前计算的结果,避免重复计算,从而减少计算的时...

文章 2023-10-30 来自:开发者社区

递归工作栈(Recursive Workstation Stack)

递归工作栈(Recursive Workstation Stack)是一种在计算机程序中实现递归计算的机制,通过使用栈来跟踪递归调用的过程,从而实现对复杂问题的求解。递归工作栈在解决具有自相似结构的问题时非常有用,例如计算斐波那契数列、解决迷宫问题等。递归工作栈的使用方法如下: 定义问题:明确需要解...

文章 2023-10-12 来自:开发者社区

栈(Stack)和队列(Queue)

栈(Stack)和队列(Queue)都是常见的数据结构,用于存储和操作一组元素。栈是一种后进先出(Last-In-First-Out,LIFO)的数据结构,类似于把元素堆在一起形成的一堆物体,最后添加的元素首先被取出,而最早添加的元素则最后被取出。类比于现实生活中的例子,可以想象成堆放在一起的盘子,只能从最上面取走或者放置。栈提供了两个基本的操作:入栈(Push):将一个元素添加到栈的顶部。出栈....

栈(Stack)和队列(Queue)
文章 2023-08-03 来自:开发者社区

队列与栈(Queue,Deque,Stack)

队列与栈(Queue,Deque,Stack)队列(Queue)是一种特殊的线性表,是一种先进先出的数据结构,它只允许在表的前端进行删除操作,在表的后端进行插入操作,进行插入操作的端称为队尾,进行删除操作的端称为队头,队列中没有元素时,称为空队列,是一种先进先出的线性数据结构, LinkedList类实现了queue接口private static void queue() { ...

文章 2023-07-26 来自:开发者社区

栈帧之操作数栈(Operand Stack)和动态链接(Dynamic Linking)解读(二)

栈顶缓存技术(Top Of Stack Cashing)技术 前面提过,基于栈式架构的虚拟机所使用的零地址指令更加紧凑,但完成一项操作的时候必然需要使用更多的入栈和出栈指令,这同时也就意味着将需要更多的指令分派(instruction dispatch)次数和内存读/写次数。由于操作数是存储在内存中的,因此频繁地执行内存读/写操作必然会影响执行速度。为了解决这个问题,HotSpot JVM的设计....

栈帧之操作数栈(Operand Stack)和动态链接(Dynamic Linking)解读(二)
文章 2023-07-26 来自:开发者社区

栈帧之操作数栈(Operand Stack)和动态链接(Dynamic Linking)解读(一)

操作数栈 概念每一个独立的栈帧除了包含局部变量表以外,还包含一个后进先出(Last-In-First-Out)的 操作数栈,也可以称之为表达式栈(Expression Stack)操作数栈,在方法执行过程中,根据字节码指令,往栈中写入数据或提取数据,即入栈(push)和 出栈(pop)某些字节码指令将值压入操作数栈,其余的字节码指令将操作数取出栈。使用它们后再把结果压入栈比如:执行复制....

栈帧之操作数栈(Operand Stack)和动态链接(Dynamic Linking)解读(一)
文章 2023-07-25 来自:开发者社区

栈帧之操作数栈(Operand Stack)和动态链接(Dynamic Linking)解读(下)

方法的调用:解析与分配在JVM中,将符号引用转换为调用方法的直接引用与方法的绑定机制相关静态链接当一个字节码文件被装载进JVM内部时,如果被调用的目标方法在编译期可知,且运行期保持不变时,这种情况下降调用方法的符号引用转换为直接引用的过程称之为静态链接动态链接如果被调用的方法在编译期无法被确定下来,只能够在程序运行期将调用的方法的符号转换为直接引用,由于这种引用转换过程具备动态性,因此也被称之为....

栈帧之操作数栈(Operand Stack)和动态链接(Dynamic Linking)解读(下)
文章 2023-06-12 来自:开发者社区

栈和队列(stack和queue)

一、栈1.1 什么是栈?栈 (Stack)是一种线性存储结构,它具有如下特点: 栈中的数据元素遵守”后进先出” (First In Last Out)的原则,简称FILO结构。 限定只能在栈顶进行插入和删除操作。栈顶与栈底:允许元素插入与删除的一端称为栈顶,另一端称为栈底。栈可以用动态数组的方式实现,也可以用链表来实现。以下是用动态数组的方式模拟实现栈。1.2 栈的相关操作1.2.1 结构体变量....

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

算法编程

开发者社区在线编程频道官方技术圈。包含算法资源更新,周赛动态,每日一题互动。

+关注