⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 infixtopostfix.c

📁 实现中缀表达式向后缀表达式的转换。要求: 键盘输入一个表达式
💻 C
字号:
#include <stdio.h>#define MAX_EXPR_SIZE 100#define MAX_STACK_SIZE 100typedef enum {LPAREN,RPAREN,PLUS,MINUS,DIVIDE,TIMES,MOD,EOS,OPERAND} precedence;static char expr[MAX_EXPR_SIZE];static int stack[MAX_STACK_SIZE];static int top=0;static int isp[]={0,19,12,12,13,13,13,0};static int icp[]={20,19,12,12,13,13,13,0};void add(int* n, precedence token){  stack[*n++]=token;}precedence delete(int* n){  return stack[*n--];}precedence getToken(char* symbol, int* n){  *symbol=expr[(*n)++];  switch(*symbol){    case '(' : return LPAREN;    case ')' : return RPAREN;    case '+' : return PLUS;    case '-' : return MINUS;    case '/' : return DIVIDE;    case '*' : return TIMES;    case '%' : return MOD;    case ' ' : return EOS;    default  : return OPERAND;  }}void printToken(precedence token){  printf("%d\t",token); }void inToPost(void){  char symbol;  precedence token;  int n=0;  stack[0]=EOS;  for(token=getToken(&symbol,&n);       token!=EOS;      token=getToken(&symbol,&n)){    if(token==OPERAND)      printf("%c", symbol);    else if(token==RPAREN){      while(stack[top]!=LPAREN)        printToken(delete(&top));      delete(&top);    }    else{      while(isp[stack[top]] >= icp[token])        printToken(delete(&top));      add(&top, token);    }  }  while( (token=delete(&top)) != EOS)    printToken(token);   printf("\n");}intmain(int argc, char* argv[]){  return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -