C++——stack的基本概念与常用接口

1.stack基本概念

概念:stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口

图形剖析:

            ____________________________栈底  | |		数据元素    	      | || |________________________| || |		数据元素   		  | || |________________________| || |		数据元素 		  | || |________________________| || |		数据元素 		  | || |________________________|	|| |		数据元素 		  | |  top()栈顶   |  |________________________|	||							||							|
入栈push() |						  	    |  pop() 出栈

栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为
  栈中进入数据称为 --入栈push
  栈中弹出数据称为 --出栈pop

2.stack 常用接口

功能描述:栈容器常用的对外接口

构造函数:
 stack<T> stk;               //stack采用模板类实现,stack对象的默认构造形式
 stack(const stack &stk);//拷贝构造函数

 赋值操作:
 stack& operator=(const stack &stk);//重载等号操作符
 数据存取:
 push(elem);//向栈顶添加元素
 pop();         //从栈顶移除第一个元素
 top();          //返回栈顶元素
 大小操作:
 empty();   //判断堆栈是否为空
 size();    //返回栈的大小

//特点:符合先进后出数据结构stack<int>s;//入栈s.push(10);s.push(20);s.push(30);s.push(40);cout << "栈的大小: " << s.size() << endl;//只要栈不为空,查看栈顶,并且执行出栈操作while (!s.empty()){//查看栈顶元素cout << "栈顶元素为: " << s.top() << endl;//出栈s.pop();}

总结:
  *入栈--push
  *出栈--pop
  *返回栈顶--top
  *判断栈是否为空--empty
  *返回栈大小--size

仅个人看视频笔记与理解,如有误可指出谢谢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/599415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何用离散二维卷积公式描述卷积过程(说实话,我没搞懂为什么索引为什么设置成对称的模式。)

问题描述&#xff1a;如何用离散二维卷积公式描述卷积过程&#xff08;说实话&#xff0c;我没搞懂为什么索引为什么设置成对称的模式。&#xff09; 众所周知&#xff0c;描述图像卷积过程&#xff0c;可以使用图形法描述&#xff0c;也可以用公式法描述&#xff0c;但是具体用…

ubuntu vi 方向键乱码问题解决方案

方向键乱码问题解决方案 这个其实很简单 只需要在终端输入apt-get install vim 待安装完成就可以了

第十课:计算机心理学、教育科技及奇点,天网,计算机的未来

第十课&#xff1a;计算机心理学、教育科技及奇点&#xff0c;天网&#xff0c;计算机的未来 第三十八章&#xff1a;计算机心理学0、计算机中用到的心理学原理1、易用度2、颜色强度排序和颜色排序3、分组更好记4、直观功能5、认出VS回想6、让机器有一定的情商以及Facebook的研…

新兴电商平台都有哪些?新手做哪个比较盈利?

我是电商珠珠 近年来的电商平台层出不穷&#xff0c;由于购物方式发生了改变&#xff0c;传统的电商模式已经不能满足当前人们的需求&#xff0c;所以在抖音推出电商-抖音小店后&#xff0c;让整个电商圈发生了全新的改变。 抖音小店的出现顺势将直播电商带了起来&#xff0c…

计算机研究生论文检索方法汇总

计算机研究生论文检索方法汇总 作为一名优质(冤种)计算机在读研究生&#xff0c;检索论文是一项不可或缺的技能之一。 一、paperwithcode paperswithcode是一个免费开放的资源平台&#xff0c;提供了机器学习领域的论文、代码、数据集、方法和评估表。在这里我们可以检索不同…

Python|使用Missingno库可视化缺失值(NaN)

在真实世界数据集的情况下&#xff0c;数据集中的某些值丢失是非常常见的。我们将这些缺失值表示为NaN&#xff08;非数字&#xff09;值。但是要构建一个好的机器学习模型&#xff0c;我们的数据集应该是完整的。这就是为什么我们使用一些插补技术来用一些可能的值替换NaN值。…

C语言多线程编程-线程同步

介绍 多线程编程&#xff0c;经常会遇到线程直接数据同步&#xff0c;为了保证数据访问安全&#xff0c;就必须考虑线程之间的同步问题。在C语言中&#xff0c;多线程编程的线程同步主要依赖于POSIX线程&#xff08;Pthreads&#xff09;库提供的同步原语。以下是一些关键的线…

DevOps(6)

目录 26.如何在Linux下跨不同的虚拟桌面共享程序&#xff1f; 27.无名&#xff08;空&#xff09;目录代表什么&#xff1f; 29.什么是守护进程&#xff1f; 30.如何从一个桌面环境切换到另一个桌面环境&#xff0c;例如从KDE切换到Gnome? 26.如何在Linux下跨不同的虚拟桌面…

你的网站或许不需要前端构建(二)

前一阵&#xff0c;有朋友问我&#xff0c;能否在不进行前端编译构建的情况下&#xff0c;用现代语法开发网站界面。 于是&#xff0c;就有了这篇文章中提到的方案。 写在前面 这篇文章&#xff0c;依旧不想讨论构建或不构建&#xff0c;哪一种方案对开发更友好&#xff0c;…

JavaScript实现大整数加法

实现大整数加法 即两个数字字符相加&#xff0c;采用按位加法实现 方法 const add (a, b) > {let i a.length - 1;let j b.length - 1;let carry 0;let ret "";while (i > 0 || j > 0) {let x 0;let y 0;let sum "";if (i > 0) {x …

《工具录》NetCat

工具录 1&#xff1a;NetCat2&#xff1a;选项介绍3&#xff1a;示例3.1&#xff1a;正向连接&#xff08;被动连接&#xff09;3.2&#xff1a;反向连接&#xff08;主动连接&#xff09;3.3&#xff1a;信息收集3.4&#xff1a;文件传输 4&#xff1a;其他 本文以 kali-linux…

MySQL——视图

目录 一.视图介绍 二.基本使用 三.视图规则和限制 一.视图介绍 视图是一个虚拟表&#xff0c;其内容由查询定义。同真实的表一样&#xff0c;视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表&#xff0c;基表的数据变化也会影响到视图。 二.基本使用 创…

在 list 中根据项目需求,使用不同的方法进行查找及删除

学习目标&#xff1a; 学习目标 在 list 中根据项目需求&#xff0c;使用不同的方法进行查找及删除 学习内容&#xff1a; 内容 在 list 中根据项目需求&#xff0c;使用不同的方法进行查找在 list 中根据项目需求&#xff0c;使用不同的方法进行删除 知识总结&#xff1a; …

【mysql django】解决Django提示mysql版本过低

目录 一、解决Django提示mysql版本过低&#xff1a;django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.26) 一、解决Django提示mysql版本过低&#xff1a;django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.26) 报错&…

Netty初探:掌握高性能网络通信框架,提升Java网络编程技能

Netty初探 NIO 的类库和 API 繁杂 &#xff0c; 使用麻烦&#xff1a; 需要熟练掌握Selector、 ServerSocketChannel、SocketChannel、 ByteBuffer等。 开发工作量和难度都非常大&#xff1a; 例如客户端面临断线重连、 网络闪断、心跳处理、半包读写、 网络拥塞和异常流的处…

左旋字符串与判断字符串左旋编程题

字符串左旋 实现一个函数&#xff0c;可以左旋字符串中的k个字符。 例如&#xff1a; ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 方法一 void left_move(char* arr, int k) {int i 0;size_t len strlen(arr);k k % len;for (i 0; i < k; i){//左旋转一个…

30 C++ 类型转换构造函数 和 类型转换函数 operator type(类对象)

类型转换构造函数 定义 //类型转换构造函数&#xff1a; //只有一个参数的构造函数&#xff0c; //且参数不是自己的const 引用的构造函数&#xff0c;也称之为 &#xff1a;类型转换构造函数。 //类型转换构造函数&#xff1a; //只有一个参数的构造函数&#xff0c; //且参数…

2.C++的编译:命令行、makefile和CMake

1. 命令行编译 命令行编译是指直接在命令行中输入以下指令&#xff1a; 预处理&#xff1a;gcc -E main.c -o main.i 编译&#xff1a;gcc -S main.i -o main.s 汇编&#xff1a;gcc -c main.s -o main.o 链接&#xff1a;gcc main.o -o main 命令汇总&#xff1a;gcc main.c …

JVM篇:直接内存

直接内存 直接内存并不是JVM的内存结构&#xff0c;直接内存是操作系统的内存&#xff0c;Java本身并不能对操作系统的内存进行操作&#xff0c;而是通过调用本地方法。直接内存常用于NIO作为缓冲区存在&#xff0c;分配成本较高但是读写性能好&#xff0c;并且不受JVM内存回收…