鱼C论坛

 找回密码
 立即注册
查看: 2584|回复: 21

[已解决]大一新生求助数据结构题!

[复制链接]
发表于 2019-10-4 20:39:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目:编写一个函数,函数的形参为一个栈和一个运算符,函数体将栈顶元素出栈赋值给a1,再将栈顶元素出栈赋值给a2,用a1和a2根据运算符做计算,最后把计算的结果入栈。
本人因之前从未接触过C语言,基础较差,国庆假期已折腾了三天却毫无进展,望大神看到能给予我帮助,万分感谢!
最佳答案
2019-10-4 21:25:35
  1. #include <iostream>
  2. #include <stack>

  3. using namespace std;


  4. void Calculate(stack<int> &st, char ch)
  5. {
  6.         int a1 = st.top();
  7.         st.pop();
  8.         int a2 = st.top();
  9.         st.pop();

  10.         switch (ch)
  11.         {
  12.         case '+':
  13.         {
  14.                 st.push(a1 + a2);
  15.                 break;
  16.         }
  17.         case '-':
  18.         {
  19.                 st.push(a1 - a2);
  20.                 break;
  21.         }
  22.         case '*':
  23.         {
  24.                 st.push(a1 * a2);
  25.                 break;
  26.         }
  27.         case '/':
  28.         {
  29.                 st.push(a1 / a2);
  30.                 break;
  31.         }
  32.         }
  33. }

  34. int main()
  35. {
  36.         //定义栈变量
  37.         stack<int> st;

  38.         //向栈中插入结构元素
  39.         st.push(1);
  40.         st.push(3);
  41.         st.push(11);
  42.         st.push(20);
  43.         st.push(8);

  44.         Calculate(st, '-');

  45.         int a = st.top();

  46.         system("pause");
  47.         return 0;
  48. }
复制代码



自己随便写的,大概就这个意思吧
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-10-4 21:05:24 | 显示全部楼层
楼主你好,这个用C语言写,还是C++啊! C语言好像没栈,还得自己写栈
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-4 21:08:45 | 显示全部楼层
先给你个思路把!
1. 函数不用说,参数都给出来了,一个栈,一个运算符,这里运算符用 char
2 函数里面switch(char)
3. 做运算就好了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-4 21:08:56 | 显示全部楼层
我叫MD 发表于 2019-10-4 21:05
楼主你好,这个用C语言写,还是C++啊! C语言好像没栈,还得自己写栈

你好,我们书中的《数据结构》代码是用C语言写的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-4 21:09:52 | 显示全部楼层
讲究的乔治 发表于 2019-10-4 21:08
你好,我们书中的《数据结构》代码是用C语言写的。

我的C语言基础不是很好,栈这一节才刚开始学,也不是很懂,老师却布置了这道题,很无奈啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-4 21:10:51 | 显示全部楼层
讲究的乔治 发表于 2019-10-4 21:09
我的C语言基础不是很好,栈这一节才刚开始学,也不是很懂,老师却布置了这道题,很无奈啊

自己的栈结构写好了吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-4 21:13:05 | 显示全部楼层
我叫MD 发表于 2019-10-4 21:10
自己的栈结构写好了吗?

我不想写栈了 我用 STL 的栈给你模拟一下  你就懂了  很简单
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-4 21:16:15 | 显示全部楼层
我叫MD 发表于 2019-10-4 21:13
我不想写栈了 我用 STL 的栈给你模拟一下  你就懂了  很简单

首先很感谢指导,我才刚开始这门课程,之前也没有接触过编程,不是很懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-4 21:25:35 | 显示全部楼层    本楼为最佳答案   
  1. #include <iostream>
  2. #include <stack>

  3. using namespace std;


  4. void Calculate(stack<int> &st, char ch)
  5. {
  6.         int a1 = st.top();
  7.         st.pop();
  8.         int a2 = st.top();
  9.         st.pop();

  10.         switch (ch)
  11.         {
  12.         case '+':
  13.         {
  14.                 st.push(a1 + a2);
  15.                 break;
  16.         }
  17.         case '-':
  18.         {
  19.                 st.push(a1 - a2);
  20.                 break;
  21.         }
  22.         case '*':
  23.         {
  24.                 st.push(a1 * a2);
  25.                 break;
  26.         }
  27.         case '/':
  28.         {
  29.                 st.push(a1 / a2);
  30.                 break;
  31.         }
  32.         }
  33. }

  34. int main()
  35. {
  36.         //定义栈变量
  37.         stack<int> st;

  38.         //向栈中插入结构元素
  39.         st.push(1);
  40.         st.push(3);
  41.         st.push(11);
  42.         st.push(20);
  43.         st.push(8);

  44.         Calculate(st, '-');

  45.         int a = st.top();

  46.         system("pause");
  47.         return 0;
  48. }
复制代码



自己随便写的,大概就这个意思吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-4 21:34:49 | 显示全部楼层
我叫MD 发表于 2019-10-4 21:25
自己随便写的,大概就这个意思吧

我还需要在这代码的基础上添加栈,是吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-4 21:35:59 | 显示全部楼层
讲究的乔治 发表于 2019-10-4 21:34
我还需要在这代码的基础上添加栈,是吗?

是的,我相当于用的别人的栈,C语言的自己写栈,然后才可以用栈
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-4 21:38:18 | 显示全部楼层
我叫MD 发表于 2019-10-4 21:35
是的,我相当于用的别人的栈,C语言的自己写栈,然后才可以用栈

我将代码导入编译器,它这样报错:    D:\Develop\c\zhan\main.c|1|fatal error: iostream: No such file or directory|
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-4 21:39:40 | 显示全部楼层
我用的C++的栈   main.c   改成 main.cpp  就行了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-4 21:40:11 | 显示全部楼层
还有 你用的哪个编译器
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-4 21:42:39 | 显示全部楼层
我叫MD 发表于 2019-10-4 21:40
还有 你用的哪个编译器

Code:Blocks    我们要求用C语言写,那那些部分我需要对应的修改呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-4 21:49:03 | 显示全部楼层
讲究的乔治 发表于 2019-10-4 21:42
Code:Blocks    我们要求用C语言写,那那些部分我需要对应的修改呢?

自己把栈结构写出来,然后把我的栈换成你的栈,头文件换成C语言的,这样就行了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-4 22:05:35 | 显示全部楼层
我叫MD 发表于 2019-10-4 21:49
自己把栈结构写出来,然后把我的栈换成你的栈,头文件换成C语言的,这样就行了

好嘞,感谢感谢。我再研究研究
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-4 22:10:25 | 显示全部楼层
讲究的乔治 发表于 2019-10-4 22:05
好嘞,感谢感谢。我再研究研究

麻烦给个最佳答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-4 22:11:00 | 显示全部楼层
不懂的话 可以在私信我
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-4 23:12:30 | 显示全部楼层
我叫MD 发表于 2019-10-4 22:11
不懂的话 可以在私信我

好呀,非常感谢,咱们可以加个联系方式吗?更加方便
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-7 08:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表