char * parseTernary(char * expression){
char *tmp = expression;
int len = 0;
while(*tmp != '\0')
{
tmp++;
len++;
}
char *stack = (char *)malloc(sizeof(char) * 10000);
memset(stack, 0, sizeof(char)*10000);
int stackSize = 0;
int i;
for(i = len-1; i>=0; i--)
{
if(expression[i] <= '9' && expression[i] >= '0')
{
stack[stackSize++] = expression[i];
}
else if(expression[i] == 'T')
{
stack[stackSize++] = 'T';
}
else if(expression[i] == 'F')
{
stack[stackSize++] = 'F';
}
else if(expression[i] == '?')
{
char a = stack[--stackSize];
char b = stack[--stackSize];
if(expression[--i] == 'T') stack[stackSize++] = a;
else stack[stackSize++] = b;
}
}
assert (stackSize == 1);
stack[stackSize] = '\0';
return stack;
}
08-14
71
09-17
566