首页 > 编程语言 > 详细

C语言基础--栈的应用之逆波兰式 后缀计算机应用

时间:2015-09-26 15:47:46      阅读:306      评论:0      收藏:0      [点我收藏+]

中缀:3+5

后缀:3 5 +

3+4*2-1 转后缀为 4 2 * 3 + 1 -

 

 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "stack.h"
int reversed_cal(char *s)
{
    int res = 0, a, b;
    char *p = s;

    if (s == NULL)
        return 0;

    p = strtok(s, " ");
    push(atoi(p));
    while ((p = strtok(NULL, " ")) != NULL)
    {
        switch (*p) 
        {
            case +:b = pop(); a = pop(); res = a+b; push(res);break;
            case -:b = pop(); a = pop(); res = a-b; push(res);break;
            case *:b = pop(); a = pop(); res = a*b; push(res);break;
            case /:b = pop(); a = pop(); res = a/b; push(res);break;
            default: push(atoi(p));
        }
    }
    return pop();
}
int main(void)
{
    int res;
    //char str[] = "64 4 + 2 / 3 *";
    char str[100];
    gets(str);

    init_stack(100);

    res = reversed_cal(str);
    printf("%d\n", res);

    destory_stack();

    return 0;
}

 

C语言基础--栈的应用之逆波兰式 后缀计算机应用

原文:http://www.cnblogs.com/zhuyaguang/p/4840773.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!