class Maillon:
	
	def __init__(self, valeur, suivant=None):
		self.valeur = valeur
		self.suivant = suivant
		
		
		
class Pile:

	def __init__(self):
		self.taille = 0 # nombre d'assiettes dans la pile
		self.sommet = None  
		
		
	def empiler(self, valeur):
		self.sommet = Maillon(valeur, self.sommet)
		self.taille += 1
		
	def depiler(self):
		if self.taille > 0:
			valeur = self.sommet.valeur
			self.sommet = self.sommet.suivant
			self.taille -= 1
			return valeur
			
	def estVide(self):
		return self.taille == 0
		
 
		
	
	def __str__(self):
		ch = "\nEtat de la pile:\n"
		sommet = self.sommet
		while sommet != None:
			ch += "|\t" + str(sommet.valeur) + "\t|" + "\n"  
			sommet = sommet.suivant
		  
		return ch
			
			
			
 
	
	
def prefixe(expression):
	pile = Pile()
	for c in reversed(expression):
		if isinstance(c, int):
			pile.empiler(c)
			print(pile)
		else:
			a = pile.depiler()
			b = pile.depiler()
			pile.empiler(eval(str(a) + c + str(b)))
			print(pile)
	return pile.depiler()
	
	
r = prefixe(['+', '*', '-', '/', 10, 2, 4, 3, 6])
print(r)
