如何注销网站备案号,城乡建设部网站广州市,建设工程信息服务平台官网,文字直播网站怎么做的今天学习的东西不算多#xff0c;放了一个星期假#xff0c;感觉不少东西都没那么清楚#xff0c;得复习一下才行。今天搞个栈题写#xff0c;把栈复习一下#xff0c;明天进入正轨#xff0c;边复习边学习新东西#xff0c;应该会有二叉树的学习等等... 【洛谷】P1449 …今天学习的东西不算多放了一个星期假感觉不少东西都没那么清楚得复习一下才行。今天搞个栈题写把栈复习一下明天进入正轨边复习边学习新东西应该会有二叉树的学习等等... 【洛谷】P1449 后缀表达 今天主要是复习所以就概括一下栈使用的重点。
目前学习的都是用数组模拟栈c中直接使用stack还不明白。
模拟栈的创建重点有二
1. 数组栈
2.一个变量栈指针
模拟栈的基本使用
1. 入栈
2. 出栈
出入栈的操作靠栈指针完成 这道题要想到用栈去解决。
基本思路在遇到 ‘ . ’时将前面的数字入栈遇到运算符的时候将栈顶的两个数字进行运算再将运行结果放到栈中。
输入------入栈--------遇到运算符栈顶两个数出栈计算-------结果入栈
注意我一开始使用scanf直接输入字符串然后用getchar去获取每个字符导致运行超时。
之后使用了fgets这个记得要学一下 和 char数组利用for循环对输入的数组进行遍历效果比第一个好。
这题是比较简单的栈应用很好的复习一遍栈的基本使用。
代码留下更清楚
#include stdio.h
#include string.hint 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;
}