#include #include #include #define EMPTY -1 typedef struct Stack* stack_ptr; struct Stack { int capacity; int *stack; int top_of_value; }; stack_ptr Create_Stack(int size) { stack_ptr tmp_cell; tmp_cell = (stack_ptr)malloc(sizeof(Stack) ); tmp_cell->stack = (int*)malloc(sizeof(int) * size); tmp_cell->capacity = size; tmp_cell->top_of_value = EMPTY; return tmp_cell; } int Is_Empty(stack_ptr s) { return s->top_of_value == EMPTY; } int Is_Full(stack_ptr s) { return s->capacity-1 == s->top_of_value; } void Push(stack_ptr s, int value) { if (!Is_Full(s) ) { s->stack[++s->top_of_value] = value; } } int Top(stack_ptr s) { if (!Is_Empty(s) ) { return s->stack[s->top_of_value--]; } return 0; } int Top_Of_Value(stack_ptr s) { return s->stack[s->top_of_value]; } int Priority_Test(int value) { switch (value) { case '*': return 100; break; case '/': return 100; break; case '+': return 1; break; case '-': return 1; break; } return 0; } int Math_Priority(int value, int _tmp, int _tmp2) { switch (value) { case 0x2A: return _tmp * _tmp2; break; case 0x2F: return _tmp / _tmp2; break; case 0x2B: return _tmp + _tmp2; break; case 0x2D: return _tmp - _tmp2; break; } return 0; }
满意请采纳
解析看不懂?求助智能家教解答查看解答