#include"stdio.h"
#include "stdlib.h"
#define ERROR 99999
#define LFTE_BRACE 5
#define RIGHT_BRACE 6
#define END 7
float calc_two(char sybol,float number1,float number2);
/*------------------------------------*/
typedef struct NODE
{
float data;
struct NODE *next;
}sign_data;
/*-------------------------------------
进栈函数push_stack()
---------------------------------------*/
int push_stack(float data,sign_data** data_top)
{
sign_data* p=NULL;
p = (void *)malloc(sizeof(sign_data));
if(p==NULL) return 0;
(*p).data = data;//把要送入的数据给节点
(*p).next = (*data_top);//节点的指针指向
(*data_top) = p;
return 1;
}
/*----------------------------------------
出栈函数pop_stack()
-----------------------------------------*/
float pop_stack(sign_data **data_top)
{
sign_data pop_data;
if(*data_top==NULL) return 0;
pop_data.data = (*data_top)->data;
pop_data.next = (*data_top)->next;
free(*data_top);
*data_top = pop_data.next;
return pop_data.data;
}
typedef struct oper
{
char symbol[2];
int number;
}symbol_data;
symbol_data express_sign[]={
{
{' ',' ' },0},
{
{'+','/0'},1},
{
{'-','/0'},2},