鱼C论坛

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

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

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

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

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

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

using namespace std;


void Calculate(stack<int> &st, char ch)
{
        int a1 = st.top();
        st.pop();
        int a2 = st.top();
        st.pop();

        switch (ch)
        {
        case '+':
        {
                st.push(a1 + a2);
                break;
        }
        case '-':
        {
                st.push(a1 - a2);
                break;
        }
        case '*':
        {
                st.push(a1 * a2);
                break;
        }
        case '/':
        {
                st.push(a1 / a2);
                break;
        }
        }
}

int main()
{
        //定义栈变量
        stack<int> st;

        //向栈中插入结构元素
        st.push(1);
        st.push(3);
        st.push(11);
        st.push(20);
        st.push(8);

        Calculate(st, '-');

        int a = st.top();

        system("pause");
        return 0;
}


自己随便写的,大概就这个意思吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-4 21:05:24 | 显示全部楼层
楼主你好,这个用C语言写,还是C++啊! C语言好像没栈,还得自己写栈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

你好,我们书中的《数据结构》代码是用C语言写的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

我的C语言基础不是很好,栈这一节才刚开始学,也不是很懂,老师却布置了这道题,很无奈啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

自己的栈结构写好了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

我不想写栈了 我用 STL 的栈给你模拟一下  你就懂了  很简单
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

首先很感谢指导,我才刚开始这门课程,之前也没有接触过编程,不是很懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

using namespace std;


void Calculate(stack<int> &st, char ch)
{
        int a1 = st.top();
        st.pop();
        int a2 = st.top();
        st.pop();

        switch (ch)
        {
        case '+':
        {
                st.push(a1 + a2);
                break;
        }
        case '-':
        {
                st.push(a1 - a2);
                break;
        }
        case '*':
        {
                st.push(a1 * a2);
                break;
        }
        case '/':
        {
                st.push(a1 / a2);
                break;
        }
        }
}

int main()
{
        //定义栈变量
        stack<int> st;

        //向栈中插入结构元素
        st.push(1);
        st.push(3);
        st.push(11);
        st.push(20);
        st.push(8);

        Calculate(st, '-');

        int a = st.top();

        system("pause");
        return 0;
}


自己随便写的,大概就这个意思吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

我还需要在这代码的基础上添加栈,是吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

是的,我相当于用的别人的栈,C语言的自己写栈,然后才可以用栈
想知道小甲鱼最近在做啥?请访问 -> 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|
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-4 21:39:40 | 显示全部楼层
我用的C++的栈   main.c   改成 main.cpp  就行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-4 21:40:11 | 显示全部楼层
还有 你用的哪个编译器
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

Code:Blocks    我们要求用C语言写,那那些部分我需要对应的修改呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

自己把栈结构写出来,然后把我的栈换成你的栈,头文件换成C语言的,这样就行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

好嘞,感谢感谢。我再研究研究
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

麻烦给个最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-4 22:11:00 | 显示全部楼层
不懂的话 可以在私信我
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

好呀,非常感谢,咱们可以加个联系方式吗?更加方便
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 16:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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