Structure Des Données - Wikipédia

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 30

Structure de

données

En informatique , une structure de données est une organisation de données et un format de


stockage généralement choisi pour un accès efficace aux données. [1] [2] [3] Plus précisément,
une structure de données est un ensemble de valeurs de données, les relations entre elles et
les fonctions ou opérations qui peuvent être appliquées aux données, [4] c'est-à-dire qu'il
s'agit d'une structure algébrique . sur les données .

Une structure de données connue sous le nom de


table de hachage .
Usage
Les structures de données servent de base aux types de données abstraits (ADT). L'ADT
définit la forme logique du type de données. La structure des données implémente la forme
physique du type de données . [5]

Différents types de structures de données sont adaptés à différents types d'applications, et


certaines sont hautement spécialisées pour des tâches spécifiques. Par exemple, les bases
de données relationnelles utilisent couramment des index B-tree pour la récupération de
données, [6] tandis que les implémentations de compilateurs utilisent généralement des
tables de hachage pour rechercher des identifiants . [7]

Les structures de données permettent de gérer efficacement de grandes quantités de


données pour des utilisations telles que de grandes bases de données et des services
d'indexation Internet. Habituellement, des structures de données efficaces sont essentielles
à la conception d'algorithmes efficaces . Certaines méthodes de conception formelles et
langages de programmation mettent l'accent sur les structures de données, plutôt que sur
les algorithmes, comme facteur organisateur clé de la conception de logiciels. Les structures
de données peuvent être utilisées pour organiser le stockage et la récupération des
informations stockées à la fois dans la mémoire principale et dans la mémoire secondaire .
[8]

Mise en œuvre
Les structures de données peuvent être implémentées à l’aide de divers langages et
techniques de programmation, mais elles partagent toutes l’objectif commun d’organiser et
de stocker efficacement les données. [9] Les structures de données sont généralement
basées sur la capacité d'un ordinateur à récupérer et à stocker des données à n'importe quel
endroit de sa mémoire, spécifié par un pointeur - une chaîne de bits , représentant une
adresse mémoire , qui peut elle-même être stockée en mémoire et manipulée par le
programme. Ainsi, les structures de données de tableau et d'enregistrement sont basées sur
le calcul des adresses d'éléments de données avec des opérations arithmétiques , tandis que
les structures de données liées sont basées sur le stockage des adresses d'éléments de
données dans la structure elle-même. Cette approche de la structuration des données a de
profondes implications pour l’efficacité et l’évolutivité des algorithmes. Par exemple,
l'allocation de mémoire contiguë dans les baies facilite les opérations d'accès et de
modification rapides, conduisant à des performances optimisées dans des scénarios de
traitement de données séquentiels. [dix]

La mise en œuvre d'une structure de données nécessite généralement l'écriture d'un


ensemble de procédures permettant de créer et de manipuler des instances de cette
structure. L'efficacité d'une structure de données ne peut être analysée séparément de ces
opérations. Cette observation motive le concept théorique d'un type de données abstrait , une
structure de données définie indirectement par les opérations qui peuvent y être effectuées
et les propriétés mathématiques de ces opérations (y compris leur coût spatial et temporel).
[11]

Exemples

La hiérarchie des types standard du


langage de programmation Python 3 .

Il existe de nombreux types de structures de données, généralement construites sur des


types de données primitifs plus simples . Des exemples bien connus sont : [12]
Un tableau est un certain nombre
d'éléments dans un ordre spécifique,
généralement tous du même type
(selon le langage, les éléments
individuels peuvent soit être tous
forcés d'être du même type, soit être
de presque n'importe quel type). Les
éléments sont accessibles à l'aide d'un
index entier pour spécifier quel
élément est requis. Les
implémentations typiques allouent des
mots mémoire contigus pour les
éléments des tableaux (mais ce n'est
pas toujours une nécessité). Les
tableaux peuvent être de longueur fixe
ou redimensionnables.
Une liste chaînée (également appelée
list ) est une collection linéaire
d'éléments de données de tout type,
appelés nœuds, où chaque nœud a lui-
même une valeur et pointe vers le
nœud suivant dans la liste chaînée. Le
principal avantage d'une liste chaînée
par rapport à un tableau est que les
valeurs peuvent toujours être insérées
et supprimées efficacement sans
déplacer le reste de la liste. Certaines
autres opérations, comme l'accès
aléatoire à un certain élément, sont
cependant plus lentes sur les listes
que sur les tableaux.
Un enregistrement (également appelé
tuple ou struct ) est une structure de
données agrégée . Un enregistrement
est une valeur qui contient d'autres
valeurs, généralement en nombre et en
séquence fixes et généralement
indexées par noms. Les éléments des
enregistrements sont généralement
appelés champs ou membres . Dans le
contexte de la programmation orientée
objet , les enregistrements sont
appelés de simples structures de
données anciennes pour les distinguer
des objets. [13]
Les tables de hachage , également
appelées cartes de hachage, sont des
structures de données qui permettent
une récupération rapide des valeurs
basées sur des clés. Ils utilisent une
fonction de hachage pour mapper les
clés aux index d'un tableau, permettant
un accès en temps constant dans le
cas moyen. Les tables de hachage
sont couramment utilisées dans les
dictionnaires, les caches et l'indexation
de bases de données. Cependant, des
collisions de hachage peuvent se
produire, ce qui peut avoir un impact
sur leurs performances. Des
techniques telles que le chaînage et
l’adressage ouvert sont utilisées pour
gérer les collisions.
Les graphiques sont des collections de
nœuds reliés par des arêtes,
représentant les relations entre les
entités. Les graphiques peuvent être
utilisés pour modéliser, entre autres,
les réseaux sociaux, les réseaux
informatiques et les réseaux de
transport. Ils sont constitués de
sommets (nœuds) et d’arêtes
(connexions entre nœuds). Les
graphiques peuvent être orientés ou
non, et ils peuvent avoir des cycles ou
être acycliques. Les algorithmes de
traversée de graphiques incluent la
recherche en largeur d'abord et la
recherche en profondeur d'abord.
Les piles et les files d'attente sont des
types de données abstraits qui peuvent
être implémentés à l'aide de tableaux
ou de listes chaînées. Une pile a deux
opérations principales : push (ajoute
un élément en haut de la pile) et pop
(supprime l'élément le plus haut de la
pile), qui suivent le principe Last In,
First Out (LIFO). Les files d'attente ont
deux opérations principales : mettre en
file d'attente (ajoute un élément à
l'arrière de la file d'attente) et retirer un
élément de la file d'attente (supprime
un élément à l'avant de la file d'attente)
qui suivent le principe First In, First Out
(FIFO).
Les arbres représentent une
organisation hiérarchique d'éléments.
Un arbre est constitué de nœuds reliés
par des arêtes, un nœud étant la racine
et tous les autres nœuds formant des
sous-arbres. Les arbres sont
largement utilisés dans divers
algorithmes et scénarios de stockage
de données. Les arbres binaires (en
particulier les tas ), les arbres AVL et
les arbres B sont des types d'arbres
populaires. Ils permettent une
recherche, un tri et une représentation
hiérarchique efficaces et optimaux des
données.
Un trie , également connu sous le nom
d'arbre de préfixes, est une structure
de données arborescente spécialisée
utilisée pour la récupération efficace
de chaînes. Essaie de stocker les
caractères d'une chaîne sous forme de
nœuds, chaque bord représentant un
caractère. Ils sont particulièrement
utiles dans les scénarios de traitement
de texte tels que la saisie semi-
automatique, la vérification
orthographique et les implémentations
de dictionnaires. Les essais
permettent une recherche rapide et
des opérations basées sur des préfixes
sur les chaînes.

Support linguistique
La plupart des langages d'assemblage et certains langages de bas niveau , tels que BCPL
(Basic Combined Programming Language), ne prennent pas en charge les structures de
données. D'un autre côté, de nombreux langages de programmation de haut niveau et
certains langages d'assemblage de niveau supérieur, tels que MASM , ont une syntaxe
spéciale ou une autre prise en charge intégrée pour certaines structures de données, telles
que les enregistrements et les tableaux. Par exemple, les langages C (un descendant direct
de BCPL) et Pascal prennent respectivement en charge les structures et les enregistrements,
en plus des vecteurs ( tableaux unidimensionnels ) et des tableaux multidimensionnels.
[14] [15]

La plupart des langages de programmation disposent d'une sorte de mécanisme de


bibliothèque qui permet aux implémentations de structures de données d'être réutilisées par
différents programmes. Les langages modernes sont généralement accompagnés de
bibliothèques standard qui implémentent les structures de données les plus courantes. Les
exemples sont la bibliothèque de modèles standard C++ , Java Collections Framework et
Microsoft .NET Framework .

Les langages modernes prennent également généralement en charge la programmation


modulaire , la séparation entre l' interface d'un module de bibliothèque et son
implémentation. Certains fournissent des types de données opaques qui permettent aux
clients de masquer les détails de mise en œuvre. Les langages de programmation orientés
objet , tels que C++ , Java et Smalltalk , utilisent généralement des classes à cette fin.

De nombreuses structures de données connues ont des versions concurrentes qui


permettent à plusieurs threads informatiques d'accéder simultanément à une seule instance
concrète d'une structure de données. [16]

Voir également

Type de données abstrait


Structure de données simultanées
Modèle de données
Dynamisation
Structure de données liée
Liste des structures de données
Structure de données persistante
Ancienne structure de données simple
Queap
Structure de données succincte
Arbre (structure des données)

Les références

1. Cormen, Thomas H. ; Leiserson, Charles


E. ; Rivest, Ronald L. ; Stein, Clifford
(2009). Introduction aux algorithmes,
troisième édition (https://dl.acm.org/citati
on.cfm?id=1614191) (3e éd.). La presse
du MIT. ISBN 978-0262033848.
2. Noir, Paul E. (15 décembre 2004).
"Structure de données" (https://xlinux.nist.
gov/dads/HTML/datastructur.html) . À
Pieterse, Vreda; Noir, Paul E. (éd.).
Dictionnaire des algorithmes et des
structures de données [en ligne] . Institut
national des normes et de la technologie .
Récupéré le 06/11/2018 . (https://xlinux.n
ist.gov/dads/HTML/datastructur.html)

3. "Structure des données" (https://www.brit


annica.com/technology/data-structure) .
Encyclopédie britannique . 17 avril 2017 .
Récupéré le 06/11/2018 . (https://www.br
itannica.com/technology/data-structure)
4. Wegner, Pierre ; Reilly, Edwin D. (2003-08-
29). Encyclopédie de l'informatique (htt
p://dl.acm.org/citation.cfm?id=1074100.1
074312) . Chichester, Royaume-Uni :
John Wiley et fils. pp. 507-512. ISBN (htt
p://dl.acm.org/citation.cfm?id=1074100.1
074312) 978-0470864128.
5. "Types de données abstraits" (https://ope
ndsa-server.cs.vt.edu/ODSA/Books/CS3/
html/ADT.html) . Virginia Tech -
Structures de données et algorithmes
CS3 . Archivé (https://web.archive.org/we
b/20230210114105/https://opendsa-serv
er.cs.vt.edu/ODSA/Books/CS3/html/ADT.
html) de l'original le 10/02/2023 .
Récupéré le 15/02/2023 . (https://opends
a-server.cs.vt.edu/ODSA/Books/CS3/htm
l/ADT.html) (https://web.archive.org/we
b/20230210114105/https://opendsa-serv
er.cs.vt.edu/ODSA/Books/CS3/html/ADT.
html)
6. Gavin Powell (2006). "Chapitre 8 :
Création de modèles de bases de
données rapides" (https://web.archive.or
g/web/20070818140343/http://searchsql
server.techtarget.com/generic/0,295582,s
id87_gci1184450,00.html) . Début de la
conception d'une base de données .
Éditions Wrox . ISBN (https://web.archive.
org/web/20070818140343/http://searchs
qlserver.techtarget.com/generic/0,29558
2,sid87_gci1184450,00.html) 978-0-
7645-7490-0. Archivé de l'original le
18/08/2007.
7. "1.5 Applications d'une table de hachage"
(https://web.archive.org/web/202104271
83057/https://www.cs.uregina.ca/Links/c
lass-info/210/Hash/) . Université de
Regina - Laboratoire CS210 : Table de
hachage . Archivé de l'original (http://ww
w.cs.uregina.ca/Links/class-info/210/Has
h/) le 27/04/2021 . Récupéré
le 14/06/2018 . (https://web.archive.org/
web/20210427183057/https://www.cs.ur
egina.ca/Links/class-info/210/Hash/) (h
ttp://www.cs.uregina.ca/Links/class-info/
210/Hash/)
8. "Lorsque les données sont trop
volumineuses pour tenir dans la mémoire
principale" (https://web.archive.org/web/
20180410032656/http://homes.sice.india
na.edu/yye/lab/teaching/spring2014-C34
3/datatoobig.php) . Université de
l'Indiana à Bloomington - Structures de
données (C343/A594) . 2014. Archivé de
l'original (http://homes.sice.indiana.edu/y
ye/lab/teaching/spring2014-C343/datato
obig.php) le 10/04/2018. (https://web.ar
chive.org/web/20180410032656/http://h
omes.sice.indiana.edu/yye/lab/teaching/
spring2014-C343/datatoobig.php) (htt
p://homes.sice.indiana.edu/yye/lab/teach
ing/spring2014-C343/datatoobig.php)
9. Vaishnavi, Gunjal ; Shraddha, Gavane ;
Yogeshwari, Joshi (2021-06-21).
"Document d'enquête sur la
reconnaissance fine des expressions
faciales à l'aide de l'apprentissage
automatique" (http://www.ijcaonline.org/a
rchives/volume183/number11/vaishnavi-
2021-ijca-921427.pdf) (PDF) . Journal
international des applications
informatiques . 183 (11) : 47-49. est ce
que je : 10.5120/ijca2021921427 (https://
doi.org/10.5120%2Fijca2021921427) . (h
ttp://www.ijcaonline.org/archives/volume
183/number11/vaishnavi-2021-ijca-92142
7.pdf) (https://doi.org/10.5120%2Fijca20
21921427)
10. Nievergelt, Jürg; Widmayer, Peter
(01/01/2000), Sack, J.-R. ; Urrutia, J. (éd.),
"Chapitre 17 - Structures de données
spatiales : concepts et choix de
conception" (https://www.sciencedirect.c
om/science/article/pii/B9780444825377
500188) , Handbook of Computational
Geometry , Amsterdam : Hollande du
Nord, pp. 725–764, ISBN (https://www.sci
encedirect.com/science/article/pii/B9780
444825377500188) 978-0-444-82537-7,
récupéré le 12/11/2023
11. Dubey, RC (2014). Biotechnologie
avancée : Pour les étudiants de B Sc et M
Sc en biotechnologie et autres sciences
biologiques . New Delhi : S Chand.
ISBN 978-81-219-4290-4.
OCLC883695533 . (https://www.worldca
t.org/oclc/883695533)

12. Seymour, Lipschutz (2014). Structures de


données (première édition révisée). New
Delhi, Inde : McGraw Hill Education.
ISBN 9781259029967. OCLC927793728 .
(https://www.worldcat.org/oclc/9277937
28)
13. Walter E. Brown (29 septembre 1999).
"Remarque sur le langage C++ : types de
POD" (https://web.archive.org/web/20161
203130543/http://www.fnal.gov/docs/wo
rking-groups/fpcltf/Pkg/ISOcxx/doc/POD.
html) . Laboratoire national de
l'accélérateur Fermi . Archivé de l'original
(http://www.fnal.gov/docs/working-group
s/fpcltf/Pkg/ISOcxx/doc/POD.html) le
03/12/2016 . Récupéré le 6 décembre
2016 . (https://web.archive.org/web/2016
1203130543/http://www.fnal.gov/docs/w
orking-groups/fpcltf/Pkg/ISOcxx/doc/PO
D.html) (http://www.fnal.gov/docs/worki
ng-groups/fpcltf/Pkg/ISOcxx/doc/POD.ht
ml)
14. "Le manuel GNU C" (https://www.gnu.org/
software/gnu-c-manual/gnu-c-manual.ht
ml) . Fondation du logiciel libre .
Récupéré le 15/10/2014 . (https://www.gn
u.org/software/gnu-c-manual/gnu-c-man
ual.html)

15. Van Canneyt, Michaël (septembre 2017).


"Pascal gratuit : Guide de référence" (htt
p://www.freepascal.org/docs-html/ref/re
f.html) . Pascale libre. (http://www.freepa
scal.org/docs-html/ref/ref.html)
16. Mark Moir et Nir Shavit. "Structures de
données simultanées" (https://web.archiv
e.org/web/20110401070433/http://www.
cs.tau.ac.il/~shanir/concurrent-data-struc
tures.pdf) (PDF) . cs.tau.ac.il . Archivé de
l'original (https://www.cs.tau.ac.il/~shani
r/concurrent-data-structures.pdf) (PDF) le
01/04/2011. (https://web.archive.org/we
b/20110401070433/http://www.cs.tau.a
c.il/~shanir/concurrent-data-structures.p
df) (https://www.cs.tau.ac.il/~shanir/con
current-data-structures.pdf)

Bibliographie

Peter Brass, Structures de données


avancées , Cambridge University Press
, 2008, ISBN 978-0521880374
Donald Knuth , L'art de la
programmation informatique , vol. 1.
Addison-Wesley , 3e édition, 1997,
ISBN 978-0201896831
Dinesh Mehta et Sartaj Sahni , Manuel
des structures et applications de
données , Chapman et Hall / CRC
Press , 2004, ISBN 1584884355
Niklaus Wirth , Algorithmes et
structures de données , Prentice Hall ,
1985, ISBN 978-0130220059

Lectures complémentaires

Alfred Aho , John Hopcroft et Jeffrey


Ullman , Structures de données et
algorithmes , Addison-Wesley, 1983,
ISBN 0-201-00023-7
GH Gonnet et R. Baeza-Yates , Manuel
d'algorithmes et de structures de
données - en Pascal et C (https://users.
dcc.uchile.cl/~rbaeza/handbook/hboo
k.html) , deuxième édition, Addison-
Wesley, 1991, ISBN 0-201-41607-7
Ellis Horowitz et Sartaj Sahni,
Fondamentaux des structures de
données en Pascal , Computer Science
Press , 1984, ISBN 0-914894-94-3

Liens externes

Structure de données
aux projets frères de Wikipédia
Définitions
du
Wiktionnaire
Médias de
Commons
Citations de
Wikiquote
Textes de
Wikisource
Manuels de
Wikibooks
Ressources
de la
Wikiversité

Descriptions (https://web.archive.org/
web/20050624234059/http://www.nis
t.gov/dads/) du Dictionnaire des
algorithmes et des structures de
données
Cours sur les structures de données (h
ttps://www.cs.auckland.ac.nz/softwar
e/AlgAnim/ds_ToC.html)
Un examen des structures de données
du point de vue .NET (http://msdn.micr
osoft.com/en-us/library/aa289148(VS.
71).aspx)
Schaffer, C. Structures de données et
analyse d'algorithmes (http://people.cs.
vt.edu/~shaffer/Book/C++3e2011091
5.pdf)

Récupéré de "
https://en.wikipedia.org/w/index.php?
title=Data_structure&oldid=1225077284 "
This page was last edited on 22 May 2024, at
07:01 (UTC). •
Le contenu est disponible sous CC BY-SA 4.0,
sauf indication contraire.

Vous aimerez peut-être aussi