美文网首页
栈和堆的数据结构

栈和堆的数据结构

作者: 五岁小孩 | 来源:发表于2024-03-21 18:22 被阅读0次

栈和堆的数据结构 - Jxy 博客

总结

都是计算机科学中常用的数据结构

栈(stack)

栈是一种先进后出(LIFO)的数据结构


image.png

栈是一种先进后出(LIFO)的数据结构,类似于一个弹夹或书堆,只能从栈顶插入和删除元素。当你把东西放在栈里时,它们就被放在最顶端,取出时也只能从最顶端开始取出。栈通常用于实现程序调用(函数调用)和表达式求值等操作。

堆是一种动态分配内存的数据结构,也称为动态存储器或自由存储器。堆是由程序员手动申请并管理的内存区域,可以用于存储各种类型的数据。堆通常用于动态分配内存,如在运行时创建一个新的对象或数据结构时。

在许多编程语言中,栈和堆都是程序中内存的一部分。栈是静态内存,大小在编译时就已经确定,而堆是动态内存,大小在运行时确定。由于栈的空间有限,它更适合存储较小的数据结构,而堆则更适合存储较大的数据结构,如数组和对象等。

栈(stack)是一种常见的数据结构,其特点是后进先出(LIFO,Last In First Out),类似于把数据放在一摞书的顶端,取出数据时只能从顶端一个个取出。

栈可以用数组或链表实现,其主要操作包括:

  1. push:将一个元素压入栈顶,即在栈顶插入一个元素。
  2. pop:将栈顶元素弹出,即删除栈顶元素。
  3. top/peek:返回栈顶元素,但不弹出。
  4. empty:判断栈是否为空。
  5. size:返回栈中元素的数量。

堆(heap)

image.png

堆(heap)是一种常见的数据结构,是一棵树形结构,其中每个节点都有一个值,且每个节点的值都比其子节点的值大(或小),这样的堆被称为大根堆(或小根堆)。

堆常常用于实现优先队列等数据结构,其主要操作包括:

  1. insert:将一个元素插入堆中,通常是将元素插入堆的最后一个位置,然后根据堆的性质将其向上调整。
  2. extract-max(或 extract-min):删除堆中的最大(或最小)元素,并返回该元素。
  3. delete:删除堆中的一个元素,通常是先将其标记为删除,然后再向上或向下调整堆,使其满足堆的性质。
  4. heapify:将一个无序的序列转化为堆的形式,通常是从最后一个非叶子节点开始,依次向下调整堆。
  5. peek-max(或 peek-min):返回堆中的最大(或最小)元素,但不删除它。
有劳各位看官 点赞、关注➕收藏,你们的支持是我最大的动力!!!
接下来会不断更新 golang 的一些底层源码及个人开发经验 (个人见解)!!!
同时也欢迎大家在评论区提问、分享您的经验和见解!!!

相关文章

  • 栈和堆以及栈区和堆区的区别

    栈和堆以及栈区和堆区的区别 数据结构中的栈和堆 栈:具有先进后出性质的数据结构 堆:一种经过排序的树形数据结构,节...

  • 堆与栈 堆区和栈区的区别

    一、 栈和堆事数据结构中的叫法,栈区和堆区是进程的内存模型中的堆区和栈区 二 内存模型里堆区和栈区和数据结构没有关...

  • 通俗易懂:C语言中内存堆和栈的区别

    数据结构的栈和堆 首先在数据结构上要知道堆栈,尽管我们这么称呼它,但实际上堆栈是两种数据结构:堆和栈。 堆和栈都是...

  • 什么是堆栈?

    堆与栈是两种数据结构,并不是一种数据结构,堆是堆,栈是栈。 1、栈:是一种只能在一端进行插入和删除的数据结构。 允...

  • JavaScript 中的深拷贝和浅拷贝

    JavaScript 内存中的堆和栈 栈(stack):堆是 JavaScript 用来存储静态数据的数据结构。静...

  • C++(98/11)问题 (1)

    一、内存问题 1、堆和栈 首先需要确定的是这里堆和栈不是数据结构中堆和栈的概念。 相同点:都分别叫heap sta...

  • OC中的Block

    操作系统中的栈和堆 注:这里所说的堆和栈与数据结构中的堆和栈不是一回事。 栈区(stack):由系统自动分配,一般...

  • iOS开发中的内存分配(堆和栈)

    进程的内存分区 本文的堆和栈是操作系统的内存中堆和栈,不是数据结构中的堆和栈。所有进程(执行的程序)都必须占用一定...

  • 堆和栈

    在数据结构中堆和栈都是一种数据项按序排列的数据结构,但我们今天所说的重点并不是数据结构中的堆和栈,而是C语言内存分...

  • 栈内存和堆内存

    一、栈和堆: 栈steak(数据结构):一种后进先出的的数据结构 栈(操作系统):由编译器自动分配释放 ,存放函数...

网友评论

      本文标题:栈和堆的数据结构

      本文链接:https://www.haomeiwen.com/subject/cjrxtjtx.html