Posted on 2012-09-17 13:06
hoshelly 阅读(251)
评论(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;
}
示例: