问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

数据结构c语言版,栈实现表达式求值

发布网友 发布时间:2022-05-10 18:41

我来回答

2个回答

热心网友 时间:2023-10-22 11:00

这个问题我前几天才答过。
搞两个栈,一个存数字,一个存符号,处理一下优先级就可以了。
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<string>
int a[10][10]={{3,2,2,3,3},{3,3,2,3,3},{2,2,2,1,0},{3,3,0,3,3},{2,2,2,0,1}};
char t[100];
using namespace std;
struct node
{
int h;
char c;
node *p;
};
int pd(char ch)
{
if((ch=='+')||(ch=='-'))return 0;
if((ch=='*')||(ch=='/'))return 1;
if(ch=='(')return 2;
if(ch==')')return 3;
if(ch=='@')return 4;
}
int main()
{
node *r,*q;
int i,l,k=0,v,w,o;
string s;
cin>>s;
l=s.length();
s[l]='@';
l++;
q=new node;
q->c='@';
for(i=0;i<=l-1;i++){
if((s[i]>='0')&&(s[i]<='9')){
t[k]=s[i];
k++;
if((s[i+1]<'0')||(s[i+1]>'9')){
t[k]=' ';
k++;
}
continue;
}
w=pd(s[i]);
v=pd(q->c);
switch (a[v][w]){
case 1:
q=q->p;
break;
case 2:
r=q;
q=new node;
q->c=s[i];
q->p=r;
break;
case 3:
r=q;
q=new node;
q->c=s[i];
q->p=r;
while(a[v][w]==3){
t[k]=q->p->c;
k++;
q->p=q->p->p;
v=pd(q->p->c);
w=pd(q->c);
}
if(a[v][w]==1)
q=q->p->p;
break;
}
}
q=new node;
for(i=0;i<=k-1;i++){
if(((t[i]>'9')||(t[i]<'0'))&&(t[i-1]>='0')&&(t[i-1]<='9')){
o=1;
v=i-1;
w=0;
while(t[v]>='0'){
w=w+o*(t[v]-'0');
o=o*10;
v--;
}
r=q;
q=new node;
q->h=w;
q->p=r;
}
switch(t[i]){
case '+':
q->p->h+=q->h;
q=q->p;
break;
case '-':
q->p->h-=q->h;
q=q->p;
break;
case '*':
q->p->h*=q->h;
q=q->p;
break;
case '/':
q->p->h/=q->h;
q=q->p;
break;
}
}
cout<<q->h;
return 0;
}

热心网友 时间:2023-10-22 11:01

这个我会,可以帮你写!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
容易发财的房地产中介公司名字 我想对自己的房子进行房产评估,去哪里办理,需要... 改字体的时候不小心改错了,全变成格仔了怎么办 手机文件不小心改错名字了怎么办 女生每天早晚各跑步一个小时,配合饮食,一个月瘦多少? 每天早晚各慢跑一小时.一个月能瘦多少斤 爱剪辑怎么去水印 给视频去水印方法 游戏本关机时可以晃吗? 笔记本玩游戏CPU温度高,会花屏 打剑网三一小时声音大,发热,还能继续吗? 如今当代年轻人的“躺平”,究竟暴露了什么危机呢? 栈的应用 表达式求值 要超好的写《我最敬爱的老师》 《上海滩》华姐为什么是现在这样子? 梅老大,浩哥哪个电视剧里的 天罚梅老大和君莫邪是什么关系 win8怎么设置锁屏 什么叫躺平的一代 失恋了怎样让心情变好? 失恋之后如何快速痊愈? 读《鲁迅:深刻与伟大的另一面是平和》有感,800字 读鲁迅之作有感 读鲁迅朝花夕拾有感! 电脑运行没有显示信号 连江县江滨公园的景作文初一500字 写一篇关于新昌公园的400字作文 关于读鲁迅先生书的感受五十多字 微作文冬季牡丹江江滨公园200字 我去滨江公园一游作文300字人给了你,人在那里的网线的,人在网吧呢吗呀呀呀呀呀呀呀呀呀呀呀呀呵呵呵 作文冬天去江滨公园玩 在大学里面,如何看待学习这件事? 数据结构栈的表达式求值应用,改代码 怎么判断水痘 写老师的作文 700字 奥斯卡历年来经典电影有哪些? 梅山七怪在各部封神榜里都出现吗? 实现算术表达式求值程序(栈的运用) C语言中栈和队列实现表达式求值的实例 三星手机用qq影音看视频时屏幕变黑怎么办 笑傲江湖中,令狐冲是怎样激怒梅庄老大的 杨耐梅的个性特点 用栈对算术表达式求值:3*(7-2),写出栈的操作顺序和过程 2014/07/14德国vs阿根廷哪一队能够拿到冠军啊 我写的用栈实现表达式求值程序,不知道哪出问题了。希望有高人帮忙指点一下。。。 不知道是不是长水痘的征兆,请大家帮忙判断一下。 死神斩魂刀 栈的应用:表达式求值。急急急 手机看视频会黑屏 表达式求值 栈实现 c++ 支持加减乘除运算 帮我判断是不是水痘