用C语言数据结构算法编写程序!算术表达式求值:以字符序列的形式从终端输入语法正确的、不含变量的整数表达式,利用给定的算符优先关系,实现对算术四则混合运算表达式的求值,并演示在求值过程中运算符栈、操作数栈、操作数栈和主要操作的变化过程.注意:要求表达式中的整数可以是多位的.
网友回答
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LEN sizeof(stacknode)
typedef struct stacknode
{ char data;
struct stacknode *next;
}stacknode;
typedef struct
{ stacknode *top;
}LinkStack;
int precedence(char c)
{ switch (c)
{
case '#':return 0;
case '+':return 1;
case '-':return 1;
case '*':return 2;
case '/':return 2;
case '(':return 3;
case ')':return 0;
default :return printf("\nError:preccedence函数内输入错误!输入了:%c\n",c);
}
}void InitStack(LinkStack *s)
{ s->top=NULL;
}int PUSH(LinkStack *s,char d)
{ stacknode *t;
t=(stacknode*)malloc(LEN);
//if((t=(stacknode*)malloc(LEN))==NULL)return 0;
t->data=d;
t->next=s->top;
s->top=t;
return 1;
}int Top(LinkStack *s,char *x){ stacknode *p; if(s->top==NULL)return 0; p=s->top; s->top=p->next; *x=p->data; free(p); return 1;
}