diff --git a/algorithmique/recursivite/liste-chainee.algo b/algorithmique/recursivite/liste-chainee.algo new file mode 100644 index 0000000..60af2a2 --- /dev/null +++ b/algorithmique/recursivite/liste-chainee.algo @@ -0,0 +1,73 @@ +Algorithme : Liste chaînée et ses procédures + +Début + Type Liste = ^Element + Type Element = Structure + Info : Variable + Suivant : Liste + FinStructure + Var Tete : Liste + Var L : Liste + + Procédure CreerListe(n : Entier, var L : Liste) + Tete <- Nil + Pour i allant de 0 à n + Allouer(L) + Lire(L^.Info) + L^.Suivant <- Nil + Tete <- L + FinPour + FinProcédure + + Procédure AffichageIter(L : Liste) + L <- Tete + Tant Que L != Nil + Ecrire(L^.Info) + L <- L^.Suivant + FinTantQue + FinProcédure + + Procédure AffichageRecur(L : Liste) + Si L = Nil + Quitter + Sinon + Ecrire(L^.Info) + AffichageRecur(L^.Suivant) + FinSi + FinProcédure + + Fonction Recherche(x : Entier, L : Liste) : Booléen + Si Tete = Nil + Retourner(Faux) + Sinon + Si L^.Info = x + Retourner(Vrai) + Sinon + Recherche(x, L^.Suivant) + FinSi + FinFonction + + Procédure AjouterTete(x : Entier, L : Liste) + Var P : Liste + Allouer(P) + P^.Info <- x + P^.Suivant <- Tete + FinProcédure + + Procédure Supprimer(x : Entier, L : Liste) + Si L = Nil + Quitter + Sinon Si L^.Info = x + Si L^.Suivant = Nil + Desallouer(L^.Suivant) + L <- Nil + Quitter + FinSi + L^.Info <- L^.Suivant^.Info + L^.Suivant <- L^.Suivant^.Suivant + Desallouer(L^.Suivant) + Sinon + Supprimer(x, L^.Suivant) + FinSi + FinProcédure +Fin