怎么用C语言编写堆栈并能进行四则运算

 我来答
虫虫当家
2012-10-14 · TA获得超过3318个赞
知道大有可为答主
回答量:5473
采纳率:0%
帮助的人:612万
展开全部
3个文件,按您的要求
头文件H
#IFNDEF _XXXX_H
#定义_XXXX_H
#定义错误-1
#定义MAX 100 / *定义堆栈的大小* /
静态int堆栈[MAX]; / *定义一个一维数组堆栈* /
静态int top = 0的; / *自定义堆栈指令* /

诠释推(int i)的;
的pop();

#ENDIF / * _XXXX_H * /

功能文件CPP
#包括“xxxx.h”的

诠释推(I)/ *内存操作数栈操作* /
{
??(顶部<MAX)
???
????栈[+ +顶部] = I / *栈,仍然有空间的堆栈顶部的表示移动一个位置* /
????返回0;
??}
??其他
???
????printf的(“堆栈满了”);
????返回错误;
??}
}
POP()/ *删除的操作数,并弹出操作* /
{
??VAR; / *定义要返回的顶级元素* /
??如果(top! = NULL)/ *仍然堆放元素* /
???
????VAR =栈[ - ] / *堆栈指针向下移动一个位置* /
????返回VAR / *返回的顶部堆栈元素* /
??}
??其他
????printf的(“堆栈是空的!\ n”);
??返回错误;
}

主文件CPP
#包括<stdio.h>
#包括<conio.h>
#包括<stdlib.h>
#包括“xxxx.h”的
无效的主要()
{
??INT M,N;
??字符L;
??整数A,B,C;
??整数K;
??{
????输出(“\ n \ n \ t单击以下提示输入你需要的信息\ n”);
????输出(“\ n \问你输入第二个捣弄数字”);
????scanf的(“%d”,&M);
????推(M)/ *第一个操作数堆栈* /
????输出(“\ n \问你输入第二个捣弄数字”);
????scanf的(“%d”,&N);
????推(N); / *第二个操作数堆栈* /
????输出(“\ n \你不想算术运算(+ / - / * / /):”);
????L = getche(); / *输入操作符* /
????开关(L)/ *确定的运营商,依次执行代码* /
????
??????'+':
????????= pop()方法;
????????= pop()方法;
????????C = A + B;
????????输出(“\ n \ n \ t计算公式为:%d条\ n”,c);
????????输出(“\ n”);
????????;
??????情况下,' - ':
????????= pop()方法;
????????= pop()方法;
????????C = A-B;
????????输出(“\ n \ n \ t计算公式为:%d条\ n”,c);
????????输出(“\ n”);
????????;
??????情况下,'*':
????????= pop()方法;
????????= pop()方法;
????????C = A * B;
????????输出(“\ n \ n \ t计算公式为:%d条\ n”,c);
????????输出(“\ n”);
????????;
??????情况下,'/':
????????= pop()方法;
????????= pop()方法;
????????C = A / B;
????????输出(“\ n \ n \ t计算公式为:%d条\ n”,c);
????????输出(“\ n”);
????????;
????}
????输出(“\ t要继续输入计算吗?(Y / N):”); / *提示用户是否在程序结束* /
????L = getche();
????(L =='N')
??????退出(0);
??}(1);
}
joodoo75
2012-10-08 · TA获得超过449个赞
知道小有建树答主
回答量:158
采纳率:0%
帮助的人:91.6万
展开全部
用一个栈就可以,需要先把运算式改一下,改成那种运算数在前面,运算符在后面
比如
a+b -> ab+
(a+b) * (c+d) + c -> (ab+)(cd+)c*+
然后由右向左进栈。。。
出栈应该是ab+先出栈就对了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冰火梦幻
2012-10-08 · TA获得超过2308个赞
知道小有建树答主
回答量:1095
采纳率:57%
帮助的人:414万
展开全部
两个栈,分别存放符号(+-*/())和运算数
然后按照运算符优先级弹出运算数和符号再将运算结果压入运算数的栈,最后运算符栈空了,运算数栈只剩下一个数,那就是最后的结果。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pigjudy_han
2012-10-10
知道答主
回答量:24
采纳率:0%
帮助的人:10.4万
展开全部
数据结构的书上有完整实现。在这里说不清。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式