• Aucun résultat trouvé

Structures de Données

N/A
N/A
Protected

Academic year: 2022

Partager "Structures de Données"

Copied!
14
0
0

Texte intégral

(1)

Structures de Données

Licence Pro GTSBD

(2)

Pourquoi ?

La façon de stocker les données influence

grandement les performances de l'algorithme

Différentes structures de données

Prennent plus ou moins de place mémoire

Permettent d'optimiser certaines opérations (lecture d'un élément en temps constant, insertion d'un

élément en temps constant, ...)

(3)

Le Tableau

Les éléments sont indexés par leur position dans le tableau T[i]

Écriture d'un élément à la position j en O(1) T[j] <- elem ;

Lecture d'un élément à la position k en O(1) elem <- T[k] ;

Parcours du tableau :

Pour i allant de 1 à taille(T) faire { Afcher(T[i]) ;

} ou

Pour tout e dans T faire { Afcher(e) ;

}

Taille fixe - impossibilité d'insérer entre deux éléments (→ décalage, puis écriture)

(4)

Le Tableau en PHP

$T = array(2, 3, 5, 7) ;

$T2 = array("lun", "MAR", "mer", "jeu", "ven", "sam",

"dim") ;

Les indices commencent à 0 !!

$T2[1] <- "mar" ;

foreach($T2 as $jour) { echo "$jour\n" ;

}

Attention, un array peut croître dynamiquement, ce n'est donc pas une implémentation exacte d'un tableau, mais une structure plus souple (et moins performante).

$argv est un array

(5)

La Liste

Structure souple (alors qu'un tableau est rigide)

Lecture/insertion/suppression en début et fin en O(1)

Lecture/insertion/suppression au milieu de la liste en O(n)

(6)

La Liste en PHP

$L = array()

Ajouter en fin de liste :

array_push($L, $elem) ;

Ajouter en début de liste :

array_unshift($L, $elem) ; O(n) !!!

Enlever en fin de liste :

$elem <- array_pop($L) ;

Enlever en début de liste :

$elem <- array_shift($L) ; O(n) !!!

(7)

La Pile

La pile de bouquins sur votre bureau. On peut :

empiler un livre

dépiler et récupérer le livre du dessus

savoir si la pile est vide ou non

En anglais Stack

Appelée LIFO « Last In, First Out »

(8)

La Pile en PHP

$P = array() ;

array_push($P, $livre) ;

$livre = array_pop($P) ;

if (count($P) == 0) { echo "Pile vide\n" ; }

(9)

La File

La file d'attente (, d'impression, ...). On peut :

envoyer un nouveau document dans la file

traiter le document en tête

savoir si la file est vide ou non

En anglais Queue

Appelée FIFO « First In, First Out »

(10)

La File en PHP

$F = array() ;

array_push($F, $document) ;

$document = array_shift($F) ;

if (count($F) == 0) { echo "File vide\n" ; }

(11)

Table associative

Tableau dont les éléments sont des couples (clé, valeur). La clé devant être unique dans la table associative. Ex :

dicoAnglFr <-

{ "Rabbit" : "Lapin", "Fox" : "Renart", "Dog" : "Chien" }

dicoAnglFr["Fox"] <- "Renard" ;

Pour toute clé dans dicoAnglFr { Écrire(dicoAnglFr[clé]) ;

}

Un tableau peut être vu comme une table associative dont les clés sont des indices

(12)

Table associative en PHP

Un array est une table associative !

$TA = array("Rabbit" => "Lapin",

"Fox" => "Renard", "Dog" :

"Chien") ;

foreach($TA as $cle => $valeur) { echo "$cle -- $valeur\n" ;

}

(13)

Exercice

Voir feuille d'exercices

(14)

Spl* Datastructures

Depuis PHP 5.3, de vrais types de données ont été implémentés :

SplFixedArray : vrai tableau

SplDoublyLinkedList : vraie liste chainée

SplStack : pile (basée sur SplDoublyLinkedList)

SplQueue : file (basée sur SplDoublyLinkedList)

SplObjectStorage : map

...

Références

Documents relatifs

Ainsi en OCaml, les structures complexes de donn´ees les plus couramment utilis´ees sont les structures de liste et de array qui sont des adaptations des structures abstraites pile

• Mais on peut faire un cours sur une notion appelé un INVARIANT (c’est- à-dire qui existe chez tous les individus et qui sont mis à mal dans les situations de souffrance et

Le comportement, dans le cas le plus défavorable, du hachage avec chaînage est très mauvais : les n clés sont toutes hachées vers la même alvéole, y formant une liste de longueur n.

• une structure de données est une structure logique destinée à contenir des données, afin de leur donner une organisation permettant de simplifier leur

Pour Gérard Soula, elle s’est produite en 1990 alors qu’il était directeur de recherche associé chez Rhône-Poulenc.. Ils

Dans le cas où la STO noterait une utilisation de ses données ouvertes ou d‟une clé API qui soit non conforme aux présentes Conditions d'utilisation, la STO se réserve le

Compétence devant être acquise en fin de maternelle L5 – Découvrir la fonction de

Les RefCell que l’on trouve dans les cellules d’une liste modélise les positions dans la liste ;. Pour une liste à n éléments, il y a n +