Académique Documents
Professionnel Documents
Culture Documents
Salle : enregistrement contient un num un entier, nbop un entier, un tableau d’opérations (une opération =
enregistrement contient code : entier, nom :chaineetat :entier
1
Salle = enregistrement
Num_s :entier
Nb_op :entier
T_op : tab
Fin enregistrement
Cellule = enregistrement
Val : salle
Suivant : * cellule
Precedent : *cellule
Fin enregistrement
LD = enregistrement
Tete : *cellule
Queue : *cellule
Fin enregistrement
Sachant que L la liste des salles est triée selon l’ordre croissant des numéros
des salles, développer les sous programmes suivants :
p<- NULL
Sinon
p <- L.tete
Tant que (p<> NULL et NumS <> p->val.Num_S) faire
3
P <- p->suivant // ou bien (*p).suivant
Fin TQ
finsi
ChercherSalle <- p
Fin
Solution 2
Fonction chercherSalle (L : LD, NumS :entier) : *cellule
ar p : *cellule 15 50
Début q
4
4. La fonction AjouterSalle (L : LD, S: Salle): LD qui permet d’ajouter, si
c’est possible, une nouvelle salle S dans la liste L tout en respectant que
la liste est triée dans l’ordre croissant des numéros des salles. Avant
d’insérer la nouvelle salle S, on doit tout d’abord vérifier si elle existait
déjà dans la liste ou non.
5
Fonction ajout_tete(L : LD, S : Salle) : LD Fonction ajout_queue(L : LD, S : Salle) : LD
Var nouv : *cellule Var nouv : *cellule
Début Début
Nouv <- allouer (taille (cellule)) Nouv <- allouer (taille (cellule))
Nouv -> val <- S Nouv -> val <- S
Nouv->precedent <- NULL Nouv->precedent <- L.queue
Nouv ->suivant <- L.tete Nouv ->suivant <- NULL
Si (L.tete = L.queue =NULL) Si (L.tete = L.queue =NULL)
L.tete <- nouv L.tete <- nouv
L.queue <- nouv L.queue <- nouv
Sinon Sinon
L.tete ->precedent <- nouv L.queue -> suivant <- nouv
L.tete <- nouv L.queue <- nouv
Finsi Finsi
Ajout_tete <- L Ajout_queue <- L
fin fin
7
Considérons maintenant une Pile de salles. On se propose de remplir cette Pile
par toutes les salles dont toutes les opérations sont terminées.
Element = enregistrement
Info : salle
Next : * element
Fin enregistrement
Pile = *element
8
L <- Supp_queue(L)
Sinon
q->precedent ->suivant <- q ->suivant
q ->suivant ->precedent <- q <- precedent
liberer (q)
finsi
finsi
finsi
SupprimeSalle <- L
fin
9
Si p->val.T_op[i].etat =0) alors
Nb <- nb+1
Finsi
Si (nb = p->val.nbop) alors
Test <- vrai
Finsi
Si (test = faux) alors
P <- p -> suiavnt
Finsi
ChercherSalleVide <- P
Fin
10
Ecrire (‘’liste vide’’)
Sinon
Tant que (ChercherSalleVide (*L)<> NULL) faire
Q<- ChercherSalleVide (*L)
*P <- Empiler (*P,Q->val) // voir cours pour empiler
Empiler (P, Q->val)
*L <- SupprimeSalle (*L, Q->val.NumS)
Fin TQ
Fin
Fonction empiler (P : Pile, S :salle) : Pile
11
Les fonctions
Fonction nom_f (paramètres = données necessaires au traitement : transmises
par valeur) : resultat
(return)
Les procédures (void) pas de return (paramètres = données (transmises par
valeur)+ des résultats(transmis par adresse))
12