Professional Documents
Culture Documents
TD Pile-File
TD Pile-File
TD Pile-File
return []
def vacuite(p):
return p==[]
def empiler(p,a):
p.append(a)
def enfiler(p,a):
p.append(a)
def depiler(p):
if vacuite(p):
print("pile vide")
else :
return p.pop()
Exercice 1 :
In [6]: def stack_copy(s):
t=creation()
s2=creation()
In [7]: s = [1,2,3]
p=stack_copy(s)
print(p,s)
[1, 2, 3] [1, 2, 3]
def stCopy(pile):
t=deque()
s2=deque()
while len(pile)!=0:
x = pile.pop()
t.append(x)
while len(t)!=0:
x = t.pop()
pile.append(x)
s2.append(x)
return s2
In [9]: s = deque([1,2,3])
p=stCopy(s)
print(p,s)
Exercice 2
In [10]: #avec deque
from collections import deque
def reverse(pile):
s1=deque()
rs = deque()
while len(pile)!=0 :
x = pile.pop()
s1.append(x)
rs.append(x)
while len(s1)!=0 :
x = s1.pop()
pile.append(x)
return rs
pile=deque([1,2,3,4])
rs = reverse(pile)
print(rs,pile)
In [12]: p = [7,11,98,2,10]
print(inverStack(p))
Exercice 3 :
In [13]: def permutation(s):
p2 = creation()
x = depiler(s)
while not vacuite(s):
empiler(p2,depiler(s))
empiler(s,x)
while not vacuite(p2):
empiler(s,depiler(p2))
def permCirc(p,n):
for i in range(n):
permutation(p)
In [14]: s = [103,2,98,11,7]
permCirc(s,2)
print(s)
Exercice 4 :
In [23]: def stack_circperm2(s,k):
p = creation()
for i in range(k) :
x = pop(s)
push(p,x)
p = inverStack(p)
permCirc(p,1)
p = inverStack(p)
In [24]: s = [5,103,2,98,11,7]
stack_circperm2(s,4)
print(s)
Exercice 5 :
In [25]: def testPar(s):
p = creation()
for c in s:
if c in ['(','[','{']:
push(p,c)
elif c == ')' or c == '}' or c == ']' :
x = pop(p)
if c==')' and x !='(' :
return "Parnthesage incorrect"
if c=='}' and x !='{' :
return "Parnthesage incorrect"
if c==']' and x !='[' :
return "Parnthesage incorrect"
if vacuite(p) :
return "Parenthesage correct"
else :
return "Parenthesage incorrect"
In [38]: testPar("((({})[][]))")
'Parenthesage correct'
Out[38]:
Ex2 :
In [26]: def file_inv(f):
f2 = file_copy(f)
if not vacuite(f2):
x = defiler(f2)
file_inv(f2)
push(f2,x)
return f2
ou bien :
In [20]: f = [1,2,3,4,5]
f2 = file_inv(f)
print(f2)
[5, 4, 3, 2, 1]
Ex 3 :
In [21]: def file_permCirc(f,n):
for i in range(n): #ou bien (len(f) - n) ça depend du sens de rotation
x = defiler(f)
enfiler(f,x)
In [22]: f=[103,2,98,11,7]
file_permCirc(f,2)
print(f)
par('[',')')
False
Out[3]:
pile = creation()
O = ('(','{','[')
F = (')','}',']')
for c in Exp :
if c in O:
empiler(pile,c)
elif c in F :
x = depiler(pile)
if not par(x,c) :
return False
if vacuite(pile):
return True
else:
return False
testPar("sin{[sin(3/n)])^n}")
False
Out[23]:
In [ ]: