[ JECA28 @ 09.08.2007. 11:34 ] @
Koji je drugi naziv za to drvo?! Rekli su mi dd,mozda ima i neko drugo ime.

Na ulazu imam aritmeticki izraz u postfiksnoj notaciji, npr.
5 3 2 * + (a to je izraz 5+3*2) .Svi operandi su jedan od drugog razdvojeni razmakom. Treba da formiram dd-drvo za ovaj izraz, prikazem ga u postfiksnoj i infiksnoj notaciji i izracunam vrednost. Kako da formiram to drvo? Pomozite mi please.
[ Divjak @ 16.08.2007. 12:16 ] @
Da li kao operatori mogu da se jave samo ?
Da li u izrazu mogu da se jave zagrade?
[ Divjak @ 17.08.2007. 10:19 ] @
Sad sam shvatio da imaš izraz u postfixu, pa je ne moguće da se jave zagrade, a pod pretpostavkom da se javljaju samo pomenute aritmetičke operacije:

1. Definišeš strukturu koja će ti predstavljati Node drveta
2. Inicijalizuješ stack S takvih Node-ova.
3. Radiš po algoritmu:

Code:

while (op = get_next_char(INPUT) != NULL)
        if ( op == operand )
                 n = new(Node)
                 printable_data(n) = op
                 PUSH(n, S)
        else if ( op == operator )
                 n1 = POP(S)
                 n2 = POP(S)
                 n = new(Node)
                 left_child(n) = n1
                 right_child(n) = n2
                 printable_data(n) = op
                 PUSH(n, S)
        end_if
end_while


Na kraju bi na stacku S trebao da ostane samo koren ovog drveta...

Da bi prikazala izraz u postfixu, obiđeš drvo po postorder poretku, a da bi ga prikazala u infixu, obiđeš ga po inorder poretku.
[ blagoyeblagoye @ 07.09.2007. 13:11 ] @
jel mozete ceo kod da postavite ili mi posaljite na mali? :)