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

猜你喜欢

转载自blog.csdn.net/CoomCon/article/details/107324597