天之道

享受编程的乐趣。
posts - 118, comments - 7, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

中缀--后缀转换

Posted on 2012-09-17 13:06 hoshelly 阅读(240) 评论(0)  编辑 收藏 引用 所属分类: DS && Algorithm
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define M 1000
static int N; //N栈的大小
static int *s;
void STACKinit(int maxN) //建立一个动态数组s,相当于建立并初始化栈
{
    s = (int *)malloc(maxN*sizeof(int));
    N=0;
}
int STACKempty()
{
    return N==0;
}
void STACKpush(int item)
{
    s[N++] = item;
}
int STACKpop()
{
    return s[--N];
}

int main()  //程序作用:将中缀表达式转为后缀表达式
{
    char a[M];
    gets(a); //输入中缀表达式
    STACKinit(N);
    int i,len=strlen(a);
    for(i=0;i<len;i++)
    {
        if(a[i] == ')')
            printf("%c ",STACKpop()); //遇到右括号弹出栈顶的运算符
        if((a[i] == '+') || (a[i] == '*'))
            STACKpush(a[i]);             //将运算符压入栈
        if((a[i] == '-') || (a[i] =='/'))
            STACKpush(a[i]);
        if((a[i] >= '0') && (a[i] <= '9')) //遇到数字则输出
            printf("%c ",a[i]);
    }
    return 0;
}

示例:


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理