Algoritmul de șantiere de marșă

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 3 iunie 2021; verificările necesită 2 modificări .

Algoritmul de triaj  este o modalitate de a analiza expresii matematice și/sau logice reprezentate în notație infixă . Poate fi folosit pentru a produce notație poloneză inversă sau ieșire de arbore de sintaxă abstractă . Algoritmul a fost propus de Edsger Dijkstra și numit de acesta „algoritmul de triaj”, deoarece seamănă cu funcționarea unei stații de triaj feroviar .

La fel ca la calcularea valorilor expresiilor în notație poloneză inversă, algoritmul funcționează folosind o stivă . Notația infixă a expresiilor matematice este cea mai des folosită de oameni, exemplele sale sunt 2+4 și 3+6*(3-2). Pentru a converti la notația poloneză inversă, sunt utilizate 2 șiruri de caractere: intrare și ieșire și o stivă pentru a stoca instrucțiunile care nu au fost încă adăugate în coada de ieșire. La conversie, algoritmul citește 1 caracter și efectuează acțiuni în funcție de acest caracter.

Algoritm

Fiecare număr de simbol, funcție sau operator este tipărit o singură dată, iar fiecare funcție de simbol, operator sau paranteză va fi adăugat și eliminat din stivă o dată. Număr constant de operații pe jeton, complexitatea liniară a algoritmului O( n ).

Link -uri