给定一个四则运算表达式,计算返回值,表达式不带括号。
如:"7-12/6", "1000-5*6/3*2+1"。
struct Node
{
int value;
bool symbol;
Node *next;
};
int fun(char a[], int n)
{
Node *head = new Node();
head->value = a[0] - '0';
head->symbol = false;
head->next = NULL;
Node *prev = head;
Node *temp = NULL;
for (int i = 1; i < n; i++)
{
if (a[i] <= '9' && a[i] >= '0')
{
if (!(prev->symbol))
{
prev->value = (prev->value) * 10 + a[i] - '0';
}
else
{
temp = new Node();
temp->value = a[i] - '0';
temp->symbol = false;
temp->next = NULL;
prev->next = temp;
prev = temp;
}
}
else
{
temp = new Node();
temp->value = a[i];
temp->symbol = true;
temp->next = NULL;
prev->next = temp;
prev = temp;
}
}
Node *p = head;
while (p->next)
{
if (p->next->symbol && (p->next->value == '*' || p->next->value == '/'))
{
if (p->next->value == '*')
{
p->value = (p->value) * (p->next->next->value);
}
else
{
p->value = (p->value) / (p->next->next->value);
}
temp = p->next->next->next;
delete p->next->next;
delete p->next;
p->next = temp;
}
else
{
p = p->next;
}
}
p = head;
while (p->next)
{
if (p->next->value == '+')
{
p->value = (p->value) + (p->next->next->value);
}
else
{
p->value = (p->value) - (p->next->next->value);
}
temp = p->next->next->next;
delete p->next->next;
delete p->next;
p->next = temp;
}
int result = head->value;
delete head;
return result;
}