请选择 进入手机版 | 继续访问电脑版

2020-12-30

[复制链接]
奋斗在韩 发表于 2021-1-1 10:33:05 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
问题形貌:设计一个步伐,演示用算符优先法对算术表达式求值的过程。使用算符优先关系,实现对算术四则肴杂运算表达式的求值。

(1)输入的形式:表达式,比方2*(3+4)#
包罗的运算符只能有’+’ 、’-’ 、’’ 、’/’ 、’(’、 ‘)’,“#”代表输入竣事符;
(2)输出的形式:运算效果,比方2
(3+4)=14;
(3)步伐所能到达的功能:对表达式求值并输出。
[code]#include#include#include#define stack_init_size 100#define stackincrement 10struct stack{    int *base;    int *top;    char data;    int stacksize;};void initstack(struct stack &s){    char e;    s.base =  (int*)malloc(stack_init_size * sizeof(int));    if(!s.base)        exit(0);    s.top = s.base;    s.stacksize = stack_init_size;}char stack_top(struct stack s){    char e;    if(s.top==s.base)        return -1;    e = *(s.top-1);    return e;}void push(struct stack &s,int e){    if(s.top-s.base >= s.stacksize)    {        s.base = (int*)realloc(s.base,(s.stacksize + stackincrement) * sizeof(int));        if(!s.base)            exit(0);        s.top = s.base + s.stacksize;        s.stacksize += stackincrement;    }    *s.top++ = e;}char pop(struct stack &s){    char e;    if(s.top==s.base)        return -1;    e = *--s.top;    return e;}int getIndex(char theta)   //获取theta所对应的索引        {            int index = 0;            switch (theta)    {            case '+':                index = 0;                break;            case '-':                index = 1;                break;            case '*':                index = 2;                break;            case '/':                index = 3;                break;            case '(':                index = 4;                break;            case ')':                index = 5;                break;        case '#':            index = 6;            default:break;            }            return index;        }        char getPriority(char theta1, char theta2)   //获取theta1与theta2之间的优先级        {            const char priority[][7] =     //算符间的优先级关系            {                { '>','>','','>','','>','>','>','','>' },                { '>','>','>','>','','>' },                { '','>' },                { '
回复

使用道具 举报

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

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )