zoukankan      html  css  js  c++  java
  • 用堆栈实现算术运算

    老感觉自己对算法技术不太过硬,今天开始多学学别人好的算法。

    以下为一个博主的简单算法,摘录一下:

    以下是算法运算的核心:

    /*选择行列标*/
    int ChooseIJ(char index)
    {
    int i;
    switch(index)
    {
    case '+':
    i=0;
    break;
    case '-':
    i=1;
    break;
    case '*':
    i=2;
    break;
    case '/':
    i=3;
    break;
    case '(':
    i=4;
    break;
    case ')':
    i=5;
    break;
    case '#':
    i=6;
    }

    return i;
    }

    /*判断运算符优先级*/
    char Judge(char top, char ch)
    {
    static char order[][7]={
    // + - * / ( ) #
    /* + */ '>','>','<','<','<','>','>',
    /* - */ '>','>','<','<','<','>','>',
    /* * */ '>','>','>','>','<','>','>',
    /* / */ '>','>','>','>','<','>','>',
    /* ( */ '<','<','<','<','<','=',' ',
    /* ) */ '>','>','>','>',' ','>','>',
    /* # */ '<','<','<','<','<',' ','='
    };
    int i,j;

    i = ChooseIJ(top);
    j = ChooseIJ(ch);

    return order[i][j];
    }

    switch(Judge(GetTop(&Ope), c))
    {
    case '<'://栈顶运算符优先级低于当前操作符, 接收下一个字符
    Push(&Ope, c);
    c = getchar();
    break;
    case '='://当遇到右括号时 就出括号, 并接收下一个字符
    Pop(&Ope);
    c = getchar();
    break;
    case '>'://栈顶的操作符优先级高 , 说明需要运算 , 并将计算结果压入操作数栈中
    chOpe = Pop(&Ope);
    a = Pop(&Num);
    b = Pop(&Num);
    Push(&Num, Operate(b,chOpe,a));
    break;
    }

    请问有几个人能看懂其中的内容

  • 相关阅读:
    dubbo 学习
    JSTL 实现 为Select赋多个值
    Spring MVC 单元测试Demo
    IDEA git commit push revert
    高并发处理
    Redis Expire TTL命令
    Redis 原子操作INCR
    Redis 安装
    慢日志查询
    angularJs 处理多选框(checkbox)
  • 原文地址:https://www.cnblogs.com/alexhg/p/6517968.html
Copyright © 2011-2022 走看看