Je dois évaluer le préfixe en utilisant une file d'attente (pas de pile). par exemple:préfixe évaluer en utilisant une file d'attente?
+ 3 * 2 1
is equivalent to 3+(2*1) = 5.
Je pense à faire une boucle dans la file d'attente à plusieurs reprises à l'aide dequeue et enqueue. Si le motif "opérateur" + "numéro" + "numéro" est trouvé, déqueuez 3 fois et mettez en file d'attente le résultat jusqu'à ce qu'il ne reste qu'un nombre dans la file d'attente.
while size(q)>1
if elements are in this pattern: an operator is followed by 2 numbers.
operator <--dequeue(q);
number1 <--dequeue(q);
number2 <--dequeue(q);
int a = apply(operator, number1, number2);
enqueue (q, a);
else if the element is a number or operator:
element <-- dequeue(q);
enqueue (q, element);
return dequeue(q);
Mon algorithme a 2 problèmes:
- opérateurs et les numéros sont 2 différents types et doivent être enregistrés dans une file d'attente. comment puis-je enregistrer un "+" dans une file d'attente int?
- 2 3 + est une entrée invalide, mais elle finira par retourner 5. 2 et 3 seront placés dans la file d'attente à droite, cela devient + 2 3. Si l'entrée est invalide, comment l'empêcher?
Un grand merci
des conseils pour le meilleur algorithme (pas de pile)? –
de ce post? http: //stackoverflow.com/questions/14912045/algorithm-to-evaluate-prefix-expression \ –
Avez-vous de la difficulté à le comprendre? –