Algorithme 24 novembre.
# Stack
def newStack():
return []
def push(stack, elem):
stack.append(elem)
def pop(stack):
return stack.pop()
def top(stack):
return stack[-1]
import sys
import stack
parens = {'(':')', '[':']', '{':'}'}
leftParens = stack.newStack()
string = sys.argv[1]
for char in string:
if char in parens:
stack.push(leftParens, char)
elif char in parens.values():
if len(leftParens) == 0:
print "No left parenthesis corresponding to",char
break
elif parens[stack.top(leftParens)] == char:
stack.pop(leftParens)
else:
print stack.top(leftParens), "does not match", char
break
else:
if len(leftParens) > 0:
print "No right parentheses for:", leftParens
import sys permet d’accéder aux arguments de ligne de commandes.
Temps de calcul du programme.
Fonction push.append est probablement implémentée pour tourner en temps constant.
Ex : si on a un tableau, à chaque nouvelle insertion dans le tableau, on devrait recopier tous
les éléments précédents, donc à chaque ajout, le temps de calcul serait proportionnel à la longueur
du tableau.