Md-IUT-Cours/algo_avancee/files.md

1.3 KiB

Les files

Le principe est celui des files d'attentes : premier arrivé, premier sorti.

Primitives

Déclaration

f = creer_pile()
bool : file_vide(f)
bool : file_pleine(f)
ajout_fin_file()
elt = debut_file()
retirer_debut_file()
Maillon struct (
    valeur : INT
    suivant : SAME)

File struct (
    debut : Maillon
    Fin : Maillon)

Définition (listes)

def creer_file():
    file = File(debut=None, fin=None)
    return file

def file_vide(file):
    return file.debut is None

def file_pleine(file):
    return False

def ajout_fin_file(file, elt):
    mail = Maillon(valeur=elt, suivant=None)
    if file.fin:
        file.fin.suivant = mail
    else:
        file.debut = mail
    file.fin = mail

def debut_file(file):
    return file.debut.valeur

def retirer_debut_file(file):
    mail = file.debut
    file.debut = file.debut.suivant
    if not file.debut:
        file.fin = None
    free(mail)

Définition (tableaux)

TODO : Implémenter ça pour le 1/02

Exercices

Exercice 1

Écrire un algo qui affiche les éléments d'une file en la conservant.

def affiche_file(f):
    f_temp = creer_file()

    while !file_vide(f):
        print(debut_file(f))
        ajouter_fin_file(f_temp, debut_file(f))
        retirer_debut_file(f)

    f = f_temp
    return f