• Aucun résultat trouvé

Algorithmique & programmation

N/A
N/A
Protected

Academic year: 2022

Partager "Algorithmique & programmation"

Copied!
6
0
0

Texte intégral

(1)

Algorithmique & programmation

Chapitre 4 : Listes chaînées Mise à jour

Suppression

Suppression d’un élément

!! Cas général

!! Cas particulier du premier élément

liste"

élément à supprimer"

liste"

(2)

Chapitre 4.5.2 3

Suppression du premier élément

procédure supptête (dr liste : pointeur) ;!

spécification {liste ! nil} ! {1ier élément supprimé}!

!p : pointeur ;!

debproc!

!p := liste ;!

!liste := liste!.suivant ;!

!laisser (p) ;!

finproc ;

liste"

p"

Suppression du premier élément ( ada )

procedure Liberer is new

Unchecked_Deallocation(Tr_ListEnt, Ta_ListEnt);

procedure supptête (liste : in out Ta_ListEnt) is p : Ta_ListEnt;

begin

p := liste ;

liste := liste.all.suivant ; Liberer(p) ;

end supptête;

(3)

Chapitre 4.5.2 5

Suppression par position

procédure supprimek (dr liste : pointeur ; d k : entier ; !

r possible : booléen) ;!

spécification {k>0} ! {(possible, on a supprimé le kième élément)!

" (¬ possible, suppression impossible)}

liste"

élément à supprimer"

(k)"

On va se débrouiller pour faire une suppression en tête!

k = 1 !

Suppression par position

!! Schéma récursif

! liste

+

= <> " possible : = faux ; !

! liste

+

" <>

!! k = 1

" suptête (liste) ; possible : = vrai ; ! !! k " 1

" supprimek (liste!.suivant, k-1, possible) ;

(4)

Chapitre 4.5.2 7

Suppression par position

procédure supprimek (dr liste : pointeur ; d k : entier ;!

r possible : booléen) ;!

spécification {k>0} ! {(possible, on a supprimé le kième élément)!

" (¬ possible, suppression impossible)}!

debproc!

!si liste = nil alors !

! !possible := faux ;!

!sinonsi k = 1 alors!

! !possible := vrai ; !

! !supptête (liste) ;!

!sinon !

! !supprimek (liste!.suivant, k-1, possible) ;!

!finsi ;!

finproc ;

!

!! Si k#0 alors parcours complet de la liste!

Suppression par position ( ada )

procedure supprimek (liste : in out Ta_ListEnt;

k : in integer; possible : out boolean) is begin

if liste = null then possible := false ; else if k = 1 then possible := true;

supptête (liste) ; else

supprimek (liste.all.suivant, k-1, possible) ;

(5)

Chapitre 4.5.2 9

Suppression associative

procédure suppval (dr liste : pointeur ; d val : t ;!

r possible : booléen) ;!

spécification {"} ! {(possible, suppression de la 1ère occurrence de val)!

" (¬ possible, suppression impossible)}!

val"

liste"

élément à supprimer"

On va se débrouiller pour pointer sur la cellule!

qui contient la première occurrence de val!

On fera alors une suppression en tête!

Suppression associative

!! Schéma récursif

! liste

+

= <> " possible : = faux ; !

! liste

+

" <>

!! liste!.info = val

" suptête (liste) ; possible : = vrai ; ! !! liste!.info " val

" suppval (liste!.suivant, val, possible) ;

(6)

Chapitre 4.5.2 11

Suppression associative

procédure suppval (dr liste : pointeur ; d val : t ; r possible : booléen) ;!

spécification {"} ! {(possible, suppression de la 1ère occurrence de val)!

" (¬ possible, suppression impossible)}!

debproc!

!si liste = nil alors !

! !possible := faux ;!

!sinonsi liste!.info = val alors!

! !supptête (liste) ;!

! !possible := vrai ;!

!sinon !

! !suppval (liste!.suivant, val, possible) ;!

!finsi ;!

finproc ;

Suppression associative ( ada )

procedure suppval (liste : in out Ta_ListEnt;

val : in integer; possible : out boolean) is begin

if liste = null then possible := false ;

else if liste.all.info = val then supptête (liste) ;

possible := true ; else

suppval (liste.all.suivant, val, possible) ;

Références

Documents relatifs

Il faudrait que le paramètre se comporte comme une « variable à laquelle on peut donner une valeur

Le concept de module a été introduit comme unité de3. structuration pour les programmes de taille importante mettant en œuvre

Le programmeur doit instancier ce package générique afin de créer un nouveau package spécialisé pour le type énuméré considéré!. Un package ainsi créé par instanciation

Insertion après la

Chaîne formée, de gauche à droite, de la valeur!. des feuilles

[r]

[r]

Dans l’absolu ce n’est pas un problème puisqu’on utilise la langue naturelle, mais pour des élèves qui débutent il peut être préférable d’utiliser un vocabulaire plus