ajout interclassement listes

This commit is contained in:
Gabriel Augendre 2014-12-10 11:48:03 +01:00
parent 06efd3f5bc
commit babb98b3e6

View file

@ -144,23 +144,104 @@ def supprimer(tete, valeur):
""" """
: entrées : entrées
: tete : Maillon : tete : Maillon
: maillon : Maillon : valeur : X
""" """
# Début # Début
if tete is not None: if tete is not None:
ptr = tete ptr = tete
precedent = None
trouve = False
if tete.val == valeur:
trouve = True
while ptr.suivant is not None and not trouve: while ptr.suivant is not None and not trouve:
precedent = ptr
if ptr.suivant.val == valeur: if ptr.suivant.val == valeur:
old = ptr.suivant
ptr.suivant = old.suivant
free(old)
trouve = True trouve = True
ptr = ptr.suivant ptr = ptr.suivant
# endwhile # endwhile
if not trouve and ptr.val == valeur: if (not trouve and ptr.val == valeur) or trouve:
old = ptr.suivant precedent.suivant = ptr.suivant
ptr.suivant = old.suivant free(ptr)
free(old)
# endif # endif
# Fin # Fin
``` ```
```python
def combiner(tete1, tete2):
"""
: entrées
: tete1, tete2 : Maillon
: precondition :
: Les deux listes sont triées
"""
# Début
if not tete1:
return tete2
elif not tete2:
return tete1
# endif
tete3 = new Maillon()
tete3.val = tete1.val if tete1.val <= tete2.val else tete2.val
tete3.suivant = None
ptr1, ptr2, ptr3 = tete1, tete2, tete3
while ptr1 or ptr2:
ptr3.suivant = new Maillon()
if not ptr2 and ptr1:
ptr3.suivant.val = ptr1.val
ptr1 = ptr1.suivant
elif not ptr1:
ptr3.suivant.val = ptr2.val
ptr2 = ptr2.suivant
else:
if (ptr1.val <= ptr2.val):
ptr3.suivant.val = ptr1.val
ptr1 = ptr1.suivant
else:
ptr3.suivant.val = ptr2.val
ptr2 = ptr2.suivant
# endif
# endif
# endwhile
return tete3
# Fin
```
```python
def autreCombiner(tete1, tete2):
"""
: entrées
: tete1, tete2 : Maillon
: precondition :
: Les deux listes sont triées
"""
# Début
if not tete1:
return tete2
elif not tete2:
return tete1
# endif
tete3 = new Maillon()
tete3.val = tete1.val
tete3.suivant = None
ptr1, ptr2, ptr3 = tete1, tete2, tete3
# On copie la liste 1 dans celle qu'on retourne.
while ptr1:
ptr3.suivant = new Maillon()
ptr3.suivant.val = ptr1.val
ptr1 = ptr1.suivant
ptr3 = ptr3.suivant
# endwhile
# On utilise l'algo précédemment écrit pour insérer la deuxième.
while ptr2:
insereTrie(tete3, ptr2)
ptr2 = ptr2.suivant
# endwhile
return tete3
```