C++ 栈( stack )学习

devtools/2024/9/23 4:23:21/

目录

1.

2.模拟

1.1.入( push )

1.2.出( pop )

1.3.获取顶元素( top )

3.直接使用( stack )

3.1.导入头文件并创建

3.2.的操作

3.2.1.入( push )

3.2.2.出( pop )

3.2.3.获取顶元素( top )

3.2.4.获取中元素个数( size )

3.2.5.判断是否为空( empty )

4.例


1.

简单来说就是图1一样的东西,每一层放一个数据。添加数据后像图2一样。的特点为先进后出。就是先进去的后出来,后进去的先出来。经常用于前缀表达式计算和后缀表达式计算。

图1
图2

2.模拟

要模拟需要先在全局定义数组和函数:

int stack[1001]; // int数组模拟
int TOP = 0; // 顶指针初始化

如果想要是别的类型的,把数组的数据类型和push(int x)的参数改一下就好了。

1.1.入( push )

定义入( 即在顶添加元素 )函数:

void push(int x)
{TOP++;stack[TOP] = x;
}

1.2.出( pop )

定义出( 即删除顶元素 )函数:

void pop()
{TOP--;
}

1.3.获取顶元素( top )

定义获取顶元素函数:

int top()
{return st[TOP]; // 返回顶元素
}

3.直接使用( stack )

可以使用stack头文件直接调用函数,且功能更多。

3.1.导入头文件并创建

在代码最前面输入

#include <stack>

在main函数中输入stack <数据类型> 名;就能定义一个

3.2.的操作

3.2.1.入( push )

( 在顶添加元素 )函数为push()。有参函数

队列名.push(x);

x为一个数据( 类型要和的类型一样 )。

3.2.2.出( pop )

( 删除顶元素 )函数为pop()。无参函数。

队列名.pop();

3.2.3.获取顶元素( top )

获取顶元素函数为top()。无参函数。

队列名.top();

3.2.4.获取中元素个数( size )

获取中元素个数函数为size()。无参函数。

队列名.size();

3.2.5.判断是否为空( empty )

判断是否为空函数为empty()。无参函数。空返回1,不空返回0。

队列名.empty();

4.例

使用stack库进行后缀表达式运算。

#include <iostream> // 头文件
#include <stack>
#include <string>
#include <cmath>
using namespace std; // 命名空间int main() // 主函数
{stack<string> s; // 定义string a; // 定义字符串getline(cin, a); // 带空格输入for (int i = a.length() - 1; i >= 0; i--){int sum = 0, idx = 0;while (a[i] >= '0' && a[i] <= '9'){// 多位数处理sum = sum + (a[i] - '0') * pow(10, idx);idx++;i--;}if (sum != 0){s.push(sum);continue;}// 符号处理int num1 = s.top();s.pop();int num2 = s.top();s.pop();if (a[i] == '+') // 加{s.push(num1 + num2);}else if (a[i] == '-') // 减{s.push(num1 - num2);}else if (a[i] == '*') // 乘{s.push(num1 * num2);}else if (a[i] == '/') // 除{if (num2 != 0){s.push(num1 / num2);}else{s.push("wrong");}}}cout << s.top(); // 输出结果return 0; // 结束程序
}


http://www.ppmy.cn/devtools/85092.html

相关文章

Python 爬虫实战----3(实力展现)

实战&#xff1a;获取豆瓣电影top250的电影名字 1.获取url&#xff1a;打开网站按发f12&#xff0c;点击网络&#xff0c;刷新找到第一个截取url和User-Agent。 2.请求爬取数据 mport requests import fake_useragent from lxml import etree import re #UA head {"User…

SSH跨操作系统免密文件传输

目录 一、Windows如何通过SSH向Linux系统传输文件 1.1. 安装SSH客户端&#xff1a; 1.2. 配置WinSCP&#xff1a; 1.3. 传输文件&#xff1a; 1.4. 文件传输免输入密码、RSA公钥设置流程 二、Linux系统之间的文件传输 2.1. 使用scp命令&#xff1a; 2.2. 从远程服务器下…

【Git多人协作开发】不同的分支下的多人协作开发模式

目录 0.前言背景 1.开发者1☞完成准备工作&协作开发 1.1查看分支情况 1.2创建本地分支feature-1 1.3三板斧 1.4push推本地分支feature-1到远程仓库 2.开发者2☞完成准备工作&协作开发 2.1创建本地分支feature-2 2.2三板斧 2.2push推送本地feature-2到远程仓库…

pytorch中的面向对象编程方法

一、__xxx__形式的魔法方法 我们可以经常在python代码片段中看到类的定义&#xff0c;其中第一个被定义的方法往往是__init__&#xff0c;如下所示&#xff1a; class Accumulator: """在n个变量上累加"""def __init__(self, n):self.data […

PHP压缩打包,下载目录或者文件,解压zip文件

函数 /*** 压缩整个文件夹为zip文件* 本地需要绝对路径&#xff0c;服务器需要相对路径*/function makeZipFile($zip_path , $folder_path ) {$rootPath realpath($folder_path);$zip new ZipArchive(); // $zip->open($zip_path, ZipArchive::CREATE | ZipArchi…

Spring Bean - xml 配置文件创建对象

类型&#xff1a; 1、值类型 2、null &#xff08;标签&#xff09; 3、特殊符号 &#xff08;< -> < &#xff09; 4、CDATA <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/bea…

go-kratos 学习笔记(5) 删除hellword从新生成服务

go-kratos 删除hellword模版里的服务&#xff0c;从新生成服务users 直接删除api/helloword 目录&#xff0c;在api目录下新建 users目录&#xff1b;使用命令生成新的proto #项目根目录执行 kratos proto add api/users/user.protobuf generate生成的user.proto需要根据自己…

Laravel:揭秘PHP世界中最优雅的艺术品

1. 引言 在PHP的世界里&#xff0c;框架如繁星般璀璨&#xff0c;但Laravel以其独特的魅力和优雅&#xff0c;成为了众多开发者心中的艺术品。本文将深入探讨Laravel为何能在众多PHP框架中脱颖而出&#xff0c;成为最优雅的选择。 1.1 Laravel的诞生背景 Laravel的诞生可以…