def infixe_to_postfixe(expression):
OPERATEURS = { '+' : 1, '-' : 1,
'*' : 2, '/' : 2,
'(' : 0, ')' : 0 }
pileA = Pile()
pileB = Pile()
for terme in expression:
if terme.isnumeric():
pileB.empiler(terme)
elif terme == "(":
pileA.empiler(terme)
elif terme == ")":
temp = pileA.depiler()
while temp != "(":
pileB.empiler(temp)
temp = pileA.depiler()
elif terme in ['+', '-', '*', '/']:
if not pileA.est_vide():
temp = pileA.depiler()
if OPERATEURS[temp]>= OPERATEURS[terme]:
pileA.empiler(terme)
pileB.empiler(temp)
else:
pileA.empiler(temp)
pileA.empiler(terme)
else:
pileA.empiler(terme)
while not pileA.est_vide():
d = pileA.depiler()
pileB.empiler(d)
return "".join(pileB.contenu)
a = infixe_to_postfixe('3+(9-7)')
print(a)
def retourner(p, j):
q = Pile()
r = Pile()
nb = 0
while j>nb and not(p.est_vide()):
nb+=1
q.empiler(p.depiler())
while not q.est_vide():
r.empiler(q.depiler())
while not r.est_vide():
p.empiler(r.depiler())
def max_pile(pile, h):
temp = Pile()
maxi = pile.depiler()
indice_maxi = 0
s=1
temp.empiler(maxi)
while not pile.est_vide() and s <h:
x = pile.depiler()
temp.empiler(x)
if x > maxi:
maxi =x
indice_maxi = s
s = s+1
while not temp.est_vide():
pile.empiler(temp.depiler())
return indice_maxi
def hauteur_pile(pile):
temp = Pile()
s = 0
while not pile.est_vide():
d = pile.depiler()
temp.empiler(d)
s = s +1
while not temp.est_vide():
pile.empiler(temp.depiler())
return s