讲究的乔治 发表于 2019-10-4 20:39:16

大一新生求助数据结构题!

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

我叫MD 发表于 2019-10-4 21:05:24

楼主你好,这个用C语言写,还是C++啊! C语言好像没栈,还得自己写栈

我叫MD 发表于 2019-10-4 21:08:45

先给你个思路把!
1. 函数不用说,参数都给出来了,一个栈,一个运算符,这里运算符用 char
2 函数里面switch(char)
3. 做运算就好了

讲究的乔治 发表于 2019-10-4 21:08:56

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

你好,我们书中的《数据结构》代码是用C语言写的。

讲究的乔治 发表于 2019-10-4 21:09:52

讲究的乔治 发表于 2019-10-4 21:08
你好,我们书中的《数据结构》代码是用C语言写的。

我的C语言基础不是很好,栈这一节才刚开始学,也不是很懂,老师却布置了这道题,很无奈啊

我叫MD 发表于 2019-10-4 21:10:51

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

自己的栈结构写好了吗?

我叫MD 发表于 2019-10-4 21:13:05

我叫MD 发表于 2019-10-4 21:10
自己的栈结构写好了吗?

我不想写栈了 我用 STL 的栈给你模拟一下你就懂了很简单

讲究的乔治 发表于 2019-10-4 21:16:15

我叫MD 发表于 2019-10-4 21:13
我不想写栈了 我用 STL 的栈给你模拟一下你就懂了很简单

首先很感谢指导,我才刚开始这门课程,之前也没有接触过编程,不是很懂

我叫MD 发表于 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;
}


自己随便写的,大概就这个意思吧

讲究的乔治 发表于 2019-10-4 21:34:49

我叫MD 发表于 2019-10-4 21:25
自己随便写的,大概就这个意思吧

我还需要在这代码的基础上添加栈,是吗?

我叫MD 发表于 2019-10-4 21:35:59

讲究的乔治 发表于 2019-10-4 21:34
我还需要在这代码的基础上添加栈,是吗?

是的,我相当于用的别人的栈,C语言的自己写栈,然后才可以用栈

讲究的乔治 发表于 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|

我叫MD 发表于 2019-10-4 21:39:40

我用的C++的栈   main.c   改成 main.cpp就行了

我叫MD 发表于 2019-10-4 21:40:11

还有 你用的哪个编译器

讲究的乔治 发表于 2019-10-4 21:42:39

我叫MD 发表于 2019-10-4 21:40
还有 你用的哪个编译器

Code:Blocks    我们要求用C语言写,那那些部分我需要对应的修改呢?

我叫MD 发表于 2019-10-4 21:49:03

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

自己把栈结构写出来,然后把我的栈换成你的栈,头文件换成C语言的,这样就行了

讲究的乔治 发表于 2019-10-4 22:05:35

我叫MD 发表于 2019-10-4 21:49
自己把栈结构写出来,然后把我的栈换成你的栈,头文件换成C语言的,这样就行了

好嘞,感谢感谢。我再研究研究

我叫MD 发表于 2019-10-4 22:10:25

讲究的乔治 发表于 2019-10-4 22:05
好嘞,感谢感谢。我再研究研究

麻烦给个最佳答案

我叫MD 发表于 2019-10-4 22:11:00

不懂的话 可以在私信我

讲究的乔治 发表于 2019-10-4 23:12:30

我叫MD 发表于 2019-10-4 22:11
不懂的话 可以在私信我

好呀,非常感谢,咱们可以加个联系方式吗?更加方便
页: [1] 2
查看完整版本: 大一新生求助数据结构题!