Inscription / Connexion Nouveau Sujet
Niveau algorithmique
Partager :

Fonctions sur les listes chaînées

Posté par
matheux14
12-03-22 à 12:43

Bonjour,

Merci d'avance.

Je sais faire la simulation mais ça coince pour l'algo.

Soit L une liste chaînée, de Ville de Bourmerdès, dont le pointeur vers la tête est T, ayant dans chaque noeud, le nom de la ville, la superficie de la ville et le nombre d'habitants dans la ville.

Écrire une fonction ou procedure qui permet de récupérer toutes les villes ayant plus (strictement) de 10.000 habitants.

Posté par
carita
re : Fonctions sur les listes chaînées 12-03-22 à 17:14

bonjour

peux-tu nous en dire plus sur la structure des données de chaque nœud ?
(si tu peux nous montrer qq éléments du début de cette liste...)

sinon, pour la démarche :
- tu vas lire la liste chainée L séquentiellement, à partir de la tête,
jusqu'à ce que le pointeur rencontre None (fin de liste)
- pour chaque élément parcouru (nœud), tu testes la donnée qui t'intéresse (le nb d'habitants), et tu complètes une liste "ville" le cas échant.

j'espère avoir répondu à ta demande.

Posté par
matheux14
re : Fonctions sur les listes chaînées 12-03-22 à 18:05

PROCEDURE RECUPERER_VILLE ((ES) tete : liste)

 VARIABLES

R ; P : Liste

  nbh : Entier

DEBUT 

      R <-- NIL

      P <-- tete

 TANT QUE P^.suivant <> NIL FAIRE

      P <-- P^.suivant 

    SI P^.nbh = 10.000 ALORS

          P^.suivant <-- R

           R <-- P^.suivant 

   FIN SI 

 FIN TANT QUE

FIN

Posté par
carita
re : Fonctions sur les listes chaînées 12-03-22 à 18:32

sans les commentaires, j'avoue ne pas tout comprendre dans ton algo...
par exemple ceci :   R <-- NIL   ----  ??

et ceci :            
P^.suivant <-- R
R <-- P^.suivant    ----   quel est le but de ces 2 instructions consécutives ?

à quel moment tu récupères le nom de la ville ?

une certitude : le test est >10000 et non pas =10000

Posté par
carita
re : Fonctions sur les listes chaînées 12-03-22 à 18:49

coup de pouce  :
un exemple sur la liste chainée (chainage simple) ma_liste, qui contient les éléments suivants :

['ville_1', 30, 20000]
['ville_2', 10, 1500]
['ville_3', 25, 17000]


class Node:
    def __init__(liste, donnee=None):
        liste.donnee = donnee
        liste.pointeur_suivant = None

class listechainee:
    def __init__(liste):
        liste.tete = None

    def recup_ville(liste):
        ville=[]
        pointeur = liste.tete
        while pointeur is not None:
            if pointeur.donnee[2] > 10000:
                ville.append(pointeur.donnee[0])
            pointeur = pointeur.pointeur_suivant
        return ville


# C.P.
ma_liste = listechainee()

ma_liste.tete = Node(["ville_1", 30, 20000])
element_2 = Node(["ville_2", 10, 1500])
element_3 = Node(["ville_3", 25, 17000])
ma_liste.tete.pointeur_suivant = element_2
element_2.pointeur_suivant = element_3


print( ma_liste.recup_ville())


le script renvoie :    
['ville_1', 'ville_3']


je te laisse y piocher ce qui t'intéresse.

Posté par
matheux14
re : Fonctions sur les listes chaînées 12-03-22 à 19:30

Ok merci



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !