栈和堆的数据结构

总结

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

栈(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):返回堆中的最大(或最小)元素,但不删除它。

参考资料

栈和堆的数据结构

有劳各位看官 点赞、关注➕收藏 ,你们的支持是我最大的动力!!!
同时也欢迎大家在评论区提问、分享您的经验和见解!!!

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五岁小孩吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值