-
Notifications
You must be signed in to change notification settings - Fork 0
/
TP4-algo.py
145 lines (126 loc) · 3.7 KB
/
TP4-algo.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
##TP4
from random import *
##Exercices sur les structures de données simples :
## Exercice 1
##Q1
def insertion(l,i,val):
if i > len(l)-1:
print("insertion impossible dans la liste")
else :
li=[]
a=val
for j in range(0,len(l)):
if j<i:
li.append(l[j])
if j==i :
li.append(a)
if j>i:
li.append(l[j-1])
return(li)
liste=[1,2,3,4,5,4,3,2,1,2,3,4,5]
##Q2
# def concatenation(l1,l2):
# return(l1+l2)
def concatenafion(l1,l2):
for i in range(0,len(l2)-1):
l1.append(l2[i])
return(l1)
##Q3
def recherch_tablo(tablo,valeur):
l=[]
for i in range (0,len(tablo)-1):
if tablo[i]==valeur :
l.append(i)
if len(l) ==0 :
return(None)
elif l==1:
return("La valeur est dans le tableau, à l'indice suivant : ",l[0])
else :
return("La valeur est dans le tableau, aux indices suivants : ",l)
##Exercice 2
##Q1+Q2
#classe premier élément
#classe nombre
class Liste :
def __init__(self,tete):
self.tete=tete
# def dernierel(self):
# l=self
# aide=l
# if l!=None:
# while aide.suiv != None :
# aide = aide.suiv
# return(aide)
def insert(self,valeur,place): #ici on insère APRES un élément
insert=Element(None,valeur,None) #insert est l'Element à insérer
element=self.tete #element est l'élément étudié dans la liste
if place==0 : #traitement du cas premier élément
if element!=None: #si liste non vide
element.prec=insert
insert.suiv=element
self.tete=insert
else:
i=0
if element!=None :
while (i < place-1) :
if element.suiv!=None : #gère le dernier élément
element=element.suiv
i+=1
insert.suiv=element.suiv
insert.prec=element
if element.suiv!=None : #gère le dernier element
element.suiv.prec=insert #FONCTIONNEL <3
element.suiv=insert
def __str__(self):
out=""
element=self.tete
while element!=None :
out+=str(element.val)
out+=" "
element=element.suiv
return out
class Element :
def __init__(self, prec, val, suiv):
self.prec=prec
self.val=val
self.suiv=suiv
##Q3
l1=Liste(Element(None,1,None))
l1.insert(2,0)
print(l1)
l2=Liste(Element(None,8,None))
l2.insert(9,1)
print(l2)
concaten(l1,l2)
def concaten(l1,l2):
i=9999
element=l2.tete
while element!=None :
l1.insert(element.val,i)
element=element.suiv
##Q4
def recherche_chain(liste,valeur):
element=liste.tete
i=0
a=True
while element.val!=valeur :
element=element.suiv
i+=1
if element==None:
print("la valeur n'est pas dans la liste")
a=False
break
if a ==True :
return("La valeur recherchée est dans la liste à la ", i , "ième position")
##EXERCICE 3
# Q1 : + - 4 * 3 2 / 5 2 correspond à (4 -(3*2)+(5/2)) : OK
# Q2 : ((3 − 4)/(6 − 12)) ∗ ((7 + 2)/6) s'écrit : * / - 3 4 - 6 12 / + 7 2 6 :OK
# Q3 : On constate que l'algorithme fonctionne
# Q4 :
def Push(list,val):
insertion(list,0,val)
def Pop(list):
return(list.pop)
def Top(list):
# Q5 :
def(evalprefix(chaine)):