leetcode(4):堆、栈和队列

0.总结

栈头文件

#include<stack>

队列头文件

#include<queue>

栈和队列成员函数相差无几:

//都有
pop()
push()
size()
empty()
swap()
emplace()
//栈
top() 
//队列
front()
back()

1. 堆

堆是在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即动态分配内存,对其访问和对一般内存的访问没有区别。堆是指程序运行时申请的动态内存,而栈只是指一种使用堆的方法(即先进后出)。

2. 栈(stack)

2.1 栈基础知识

stack——先进后出,删除与加入均在栈顶操作

栈也称为堆栈,是一种线性表。

堆栈的特性: 最先放入堆栈中的内容最后被拿出来,最后放入堆栈中的内容最先被拿出来, 被称为先进后出、后进先出。

堆栈中两个最重要的操作是PUSH和POP,两个是相反的操作。

PUSH:在堆栈的顶部加入一 个元素。

POP:在堆栈顶部移去一个元素, 并将堆栈的大小减一。

在这里插入图片描述

2.2 栈成员函数详解

参考:https://blog.csdn.net/gscsdlz/article/details/52169463

C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)的数据结构。

头文件为:

#include <stack> 

c++ stl栈stack的成员函数介绍

操作 比较和分配堆栈

empty() 堆栈为空则返回真

pop() 移除栈顶元素

push() 在栈顶增加元素

emplace()

push()函数和emplace()都是在栈这个容器的顶部插入一个新的元素。

  • push()

实际上是调用的底层容器的push_back()函数,新元素的值是push函数参数的一个拷贝。

  • emplace()

实际上是调用的底层容器的emplace_back()函数,新元素的值是在容器内部就地构造的,不需要移动或者拷贝
stack的emplace也可以用在普通的基本类型上。

size() 返回栈中元素数目

top() 返回栈顶元素

swap() 交换两个栈的内容(所有元素),

swap()函数通过非成员函数swap()来交换底层容器,时间复杂度O(1) 用法:a.swap(b)

堆与栈的区别总结如下:
在这里插入图片描述

3. 队(queue)

队列也是一种特殊的线性表。不同于栈所服从的先进后出的原则,队列的原则是先进先出。

队列在队头做删除操作,在队尾做插入操作:

在这里插入图片描述

参考多篇文章:

  1. https://blog.csdn.net/sunprice/article/details/82920645
  2. https://blog.csdn.net/qq_30815237/article/details/88804399
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

CoomCon

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

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

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

打赏作者

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

抵扣说明:

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

余额充值