当前位置: 首页 > news >正文

25.2.3 【洛谷】作为栈的复习不错(学习记录)

今天学习的东西不算多,放了一个星期假,感觉不少东西都没那么清楚,得复习一下才行。今天搞个栈题写,把栈复习一下,明天进入正轨,边复习边学习新东西,应该会有二叉树的学习等等...


【洛谷】P1449 后缀表达

今天主要是复习,所以就概括一下栈使用的重点。

目前学习的都是用数组模拟栈,c++中直接使用stack还不明白。

模拟栈的创建重点有二:

1. 数组(栈)

2.一个变量(栈指针)

模拟栈的基本使用:

1. 入栈

2. 出栈

(出入栈的操作靠栈指针完成)


这道题要想到用栈去解决。

基本思路:在遇到 ‘ . ’时,将前面的数字入栈,遇到运算符的时候,将栈顶的两个数字进行运算,再将运行结果放到栈中。

输入------>入栈-------->遇到运算符,栈顶两个数出栈计算------->结果入栈

注意:我一开始使用scanf直接输入字符串,然后用getchar去获取每个字符,导致运行超时

之后使用了fgets(这个记得要学一下) 和 char数组,利用for循环对输入的数组进行遍历,效果比第一个好。

这题是比较简单的栈应用,很好的复习一遍栈的基本使用。

代码留下更清楚:

#include <stdio.h>
#include <string.h>int main() {char s[10000];fgets(s, sizeof(s), stdin);long long stack[1000];long long ok = 0;long long i = -1;// 遍历每个字符直到遇到 '@'for (int j = 0; s[j] != '@'; j++) {char input = s[j];if (input >= '0' && input <= '9') {// 处理数字字符ok = ok * 10 + (input - '0');} else if (input == '.') {// 入栈当前数值stack[++i] = ok;ok = 0; // 重置 ok 为 0} else if (input == '+') {stack[i - 1] = stack[i - 1] + stack[i];i--; // 减小栈顶指针} else if (input == '-') {stack[i - 1] = stack[i - 1] - stack[i];i--;} else if (input == '*') {stack[i - 1] = stack[i - 1] * stack[i];i--;} else if (input == '/') {// 向零取整的除法stack[i - 1] = (stack[i - 1] / stack[i]);i--;}}// 打印栈顶元素,即计算结果printf("%lld\n", stack[0]);return 0;
}

http://www.lryc.cn/news/531202.html

相关文章:

  • MFC程序设计(七)运行时类信息机制
  • fflush的概念和使用案例
  • 嵌入式知识点总结 操作系统 专题提升(四)-上下文
  • React 封装高阶组件 做路由权限控制
  • 【实践案例】基于大语言模型的海龟汤游戏
  • NeetCode刷题第20天(2025.2.1)
  • DeepSeek:人工智能领域的革新者与未来展望
  • Spring Bean 容器
  • Flask代码审计实战
  • springboot启动配置文件-bootstrap.yml常用基本配置
  • 2月3日星期一今日早报简报微语报早读
  • 如何确认Linux嵌入式系统的触摸屏对应的是哪个设备文件(/dev/input/event1)?如何查看系统中所有的输入设备?输入设备的设备文件有什么特点?
  • FFmpeg:多媒体处理的瑞士军刀
  • 电控三周速成计划参考
  • Ubuntu修改配置文件--编辑操作
  • 2021版小程序开发5——小程序项目开发实践(1)
  • 二分/双指针/单调栈队列专题
  • XCCL、NCCL、HCCL通信库
  • 【Deep Seek本地化部署】模型实测:规划求解python代码
  • MySQL锁类型(详解)
  • 搜索插入位置(35)
  • 八. Spring Boot2 整合连接 Redis(超详细剖析)
  • VDSuit-Full惯性动捕设备:高效率、高品质动画制作的利器
  • 【环境搭建】1.1源码下载与同步
  • 开源智慧园区管理系统对比其他十种管理软件的优势与应用前景分析
  • C语言可变参数
  • (1)Linux高级命令简介
  • frida 入门
  • 基于STM32的智能健康监测手环
  • neo4j-community-5.26.0 install in window10