Marshalling yard algoritme

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 3. juni 2021; checks kræver 2 redigeringer .

Rangergårdsalgoritmen  er en måde at analysere matematiske og/eller logiske udtryk repræsenteret i infix-notation . Kan bruges til at producere omvendt polsk notation eller abstrakt syntakstræoutput . Algoritmen blev foreslået af Edsger Dijkstra og af ham kaldt "rangerpladsalgoritmen", da den minder om driften af ​​en rangerbanegård .

Ligesom at beregne værdierne af udtryk i omvendt polsk notation, fungerer algoritmen ved hjælp af en stak . Infiksnotationen af ​​matematiske udtryk bruges oftest af mennesker, dens eksempler er 2+4 og 3+6*(3-2). For at konvertere til omvendt polsk notation, bruges 2 strenge: input og output, og en stak til at gemme udsagn, der endnu ikke er tilføjet til outputkøen. Ved konvertering læser algoritmen 1 tegn og udfører handlinger afhængigt af denne karakter.

Algoritme

Hvert token-nummer, hver funktion eller operator udskrives kun én gang, og hver token-funktion, operator eller parentes tilføjes og fjernes fra stakken én gang. Konstant antal operationer pr. token, lineær kompleksitet af algoritmen O( n ).

Links