[PDF] Chapitre 17 Structures de données élémentaires





Previous PDF Next PDF



Algorithmique Structures de données et langage C

On définit une structure `a l'aide du mot-clé: struct suivi d'un Le langage C permet de créer de nouveaux noms de types de données grace `a la fonction ...



Programmation C++ (débutant)/Les structures

En général pour représenter en C++ des données



Introduction aux structures de données illustrée par le langage C

Ce phénom`ene conduit. `a considérer ce que l'on appelle une structure de données en informatique. Les structures de données dont le besoin s'est fait le plus 



Programmation Structurée en Langage C

Le langage C est un langage de bas niveau dans la mesure où il permet l'accès à des données que manipulent les ordinateurs (bits octets



Algorithmique Structures de données

Un tableau est une structure de donnée T qui permet de stocker C : tableau int[] (taille fixe) pointeur (taille variable). C++ : std::array (taille ...



INF3105 – Structures de données et algorithmes Notes de cours

aller plus en profondeur au sujet des structures de données la référence recommandée est [GTM11]. Pour approfondir le langage C++



Programmation Impérative II Structures de données

Type de données et objets. Remarque. Bien que l'on soit en C++ qui est un langage orienté objet dans ce cours



Structures de Données

8 jan. 2021 Les notions de constructeur et de destructeur sont des notions qui relèvent davantage du langage C++ que du langage C. Ces deux notions sont en ...



Chapitre 17 Structures de données élémentaires

o Une file. ? C'est un tableau dynamique qui peut grossir dans les deux directions : une file bilatérale. ? L'insertion des éléments au début ou bien à la fin 



Structures de Données

27 sept. 2011 structure de données est une organisation ... Introduire quelques structures utilisées ... Les types de base (Langage C).



Structures de données en C - fadumiacma

Maitriser les structures de données élémentaires: les structures les listes chaînées les piles les files et les arbres Utiliser les concepts des structures de données élémentaires pour résoudre quelques problèmes simples Pré-requis du module: Avoir de bonnes connaissances en



LES DONNEES STRUCTUREES

Un enregistrement appelé structure En langage C est une variable complexe qui permet de désigner sous un seul nom un ensemble de valeurs pouvant être de type différent Nom du champ Chaque élément de la structure est nommé champ L’accès à un champ se fait par son nom dans la structure 1 2 Déclaration d’une structure



1 Structures de données en C

Structures de données en C Responsable: Brahim Aksasse Module I143 Filière MIP Semestre 4 FST Errachidia AU: 2019-2020 1 Avant propos Objectifs :



COURS DE STRUCTURES DE DONNÉES LICENCE 2 - UNIVERSITÉ CLERMONT 2

COURS DE STRUCTURES DE DONNÉES LICENCE 2 - UNIVERSITÉ CLERMONT 2 MAMADOU MOUSTAPHA KANTÉ Table des matières 1 Niveau de Description 2 1 1 Structure Générale d’un Ordinateur 2 1 2 Mémoire Centrale 3 1 3 Langages 3 2 Algorithmes Valeurs Types et Éléments du Langage 4 2 1 Données 5 2 2 Tableaux statiques 5 2 3 La Syntaxe du



Searches related to structure de données en c PDF

Ce polycopié est structuré en huit chapitres comme suit : Dans le premier chapitre des notions de base sur la structure globale d’un algorithme sont données ainsi que les différentes parties qui le composent suivie par les instructions de base les plus élémentaires

Comment définir les données structurées ?

SNT 2 de – Les données structurées 3 Identifions les données élémentaires : 1 : La civilité, dont le descripteur est une chaine de 4 caractères maximum (de valeur « M. » ou « Mme. »). 2 : Le prénom, dont le descripteur est une chaine de 32 caractères maximum. 3 : Le nom, dont le descripteur est une chaine de 32 caractères maximum. 4

Quelle est l’utilité des structures de données en C?

STRUCTURES DE DONNÉES EN C La suite de ce cours va présenter des structures de données classiques, dont on trouve l’utilité dans de nombreux problèmes. Les structures de données qui vont être présentées ne sont que très rarement utilisées telles quelles dans la résolution des problèmes réels.

Quels sont les formats de données structurées ?

On retrouve des centaines de formats de données structurées différents comme le prix, la disponibilité et la notation d’un produit, l’auteur d’un article, la date d’une publication, les ingrédients d’une recette de cuisine, les dates d’un événement, les FAQ …

Comment sont codées les données structurées?

Les données structurées sont codées à l'aide d'un balisage sur la page à laquelle les informations s'appliquent. Les données structurées d'une page décrivent son contenu.

Chapitre 17 Structures de données élémentaires Chapitre 17 : Structures de données élémentaires 269

© Mohamed N. Lokbani v1.01 POO avec C++

Chapitre 17

Structures de données élémentaires

Chapitre 17 : Structures de données élémentaires 270

© Mohamed N. Lokbani v1.01 POO avec C++

1. Généralités

- Les structures de données sont une part essentielle de la programmation.

- Une structure de données correspond à un ensemble de deux ou plusieurs données, formant ainsi un

groupe ou un ensemble que l'on peut traiter à loisir.

- Cet ensemble de données peut-être constitué de différentes sortes d'éléments : des entiers, réels,

caractères, comptes bancaires etc.

- On ne s'intéresse pas aux éléments de l'ensemble i.e. à leur implémentation mais aux opérations que nous

pouvons réaliser sur cet ensemble. - Les opérations de base définies sur cet ensemble sont comme suit: ▪ Tester si l'ensemble est vide. ▪ Ajouter un élément à l'ensemble. ▪ Vérifier si un élément appartient à l'ensemble. ▪ Supprimer un élément de l'ensemble. - La gestion de cet ensemble doit tenir compte de deux critères essentiels : ▪ Un minimum de place mémoire utilisée. ▪ Un minimum d'opérations i.e. réduire le temps de traitement des opérations. - Parmi les avantages :

▪ Ces structures de données peuvent être utilisées par d'autres programmes sans se soucier de la

manière avec laquelle elles ont été implémentées.

▪ Cette approche permet aussi de rationaliser une implémentation et donc, elle permet d'aider à

faire la spécification. Chapitre 17 : Structures de données élémentaires 271

© Mohamed N. Lokbani v1.01 POO avec C++

2. Types de collections

2.1 Séquentiels

- Dans cette catégorie de collections, l'accès est linéaire. C'est l'ordre qui compte. - Les éléments peuvent être stockés sous la forme : o Un tableau ▪ Dans ce cas, les éléments sont accessibles à partir d'un index.

▪ Ajouter ou enlever des éléments à partir de la fin du tableau est une opération très rapide à

exécuter.

▪ Par contre, insérer un élément au début ou bien au milieu du tableau, il prend un certain temps

car les éléments doivent être déplacés un par un pour créer une place au nouvel arrivant.

o Une file

▪ C'est un tableau dynamique qui peut grossir dans les deux directions : une file bilatérale.

▪ L'insertion des éléments au début ou bien à la fin de la file est une opération rapide à exécuter.

▪ Par contre insérer un élément au milieu va prendre un certain temps car il faudra déplacer les

éléments.

o Une liste

▪ Les listes ne permettent pas un accès aléatoire c.-à-d. à un index donné comme le font les

tableaux et les files. Pour accéder au Nième élément de la liste, il faut passer par les N-1

prédécesseurs.

▪ L'accès à un élément donné prend un temps linéaire nettement supérieur que, si cet élément était

dans un tableau ou une file.

▪ L'avantage des listes est que l'insertion ou le retrait d'un élément se fait rapidement.

▪ Il suffit de modifier les adresses des pointeurs, des prédécesseurs et des successeurs. Chapitre 17 : Structures de données élémentaires 272

© Mohamed N. Lokbani v1.01 POO avec C++

2.2 Associatifs

- Dans cette catégorie de collections, l'accès se fait par clés.

- Les éléments sont rangés suivant un certain critère. Ce critère est une sorte de fonction qui compare

suivant la valeur ou bien la clé associée à la valeur. - Parmi ces collections nous citerons les dictionnaires (" map »).

2.3 Adaptateurs

- Dans cette catégorie de collections, l'accès est réglementé. - Ces conteneurs adaptent les conteneurs séquentiels afin de remplir des missions précises.

- Parmi ces adaptateurs, nous citerons: pile (" stack »), file (" queues ») et les files prioritaires (" priority

queues »). Chapitre 17 : Structures de données élémentaires 273

© Mohamed N. Lokbani v1.01 POO avec C++

3. Listes

3.1. Généralités

- Un tableau volumineux reste inefficace quand on veut insérer un élément dans une position donnée (une

opération très coûteuse). - Dans ce cas là, nous avons recours aux liens dynamiques comme par exemple les listes.

- Chaque élément de la liste a son propre segment de mémoire et peut pointer son prédécesseur et/ou son

successeur.

- Dans une liste, le nombre d'éléments et l'ordre de ses éléments peuvent être facilement changés.

- Par contre, il faut parcourir la liste (à partir de la tête parfois à partir de la queue) pour retrouver un

élément donné.

- Cette opération est moins rapide que celle permettant d'accéder grâce à l'index, à un élément d'un tableau

donné. Chapitre 17 : Structures de données élémentaires 274

© Mohamed N. Lokbani v1.01 POO avec C++

- Liste simplement chaînée : l'accès se fait à partir du premier élément vers l'avant uniquement.

- Liste doublement chaînée : l'accès peut se faire à partir du premier ou dernier élément, donc

indifféremment vers l'avant ou vers l'arrière. 1 0 3 2

Tableau

Adresse

0

Adresse

1

Adresse

2

Adresse

3

Liste simplement chaînée

Liste doublement chaînée

Adresse

suivante 0

Adresse

précédent e

Adresse

suivant 1

Adresse

précédent

Adresse

suivant 2

Adresse

précédent

Adresse

suivant 3

Adresse

précédent Chapitre 17 : Structures de données élémentaires 275

© Mohamed N. Lokbani v1.01 POO avec C++

3.2. Référence à une liste

Une référence à une liste est référence au 1er élément qui constitue la tête. Le dernier élément (queue) pointe vers

un objet vide (nul).

3.3. Composantes d'une liste

Un élément de la liste est composé de 2 parties: - Les attributs pour spécifier la "valeur" de l'élément. - Un pointeur vers son successeur. class element { déclaration des attributs de l'élément; element prochain;

éventuellement des méthodes;

Adresse

0

Adresse

1

Adresse

N null Référence Chapitre 17 : Structures de données élémentaires 276

© Mohamed N. Lokbani v1.01 POO avec C++

Par exemple, pour une liste dont les éléments sont des entiers, les composants d'une telle liste sont comme suit :

class Cellule { int valeur;

Cellule* prochain;

Ou bien:

class Cellule { int valeur;

Cellule* prochain;

public:

Cellule(int v, Cellule* p) {

valeur = v; prochain = p; // avec une panoplie de méthodes... voir plus bas ... Chapitre 17 : Structures de données élémentaires 277

© Mohamed N. Lokbani v1.01 POO avec C++

3.4. Opérations possibles sur une liste

3.4.1. Ajouter un élément : pour une liste simplement chaînée, on insère l'élément à la tête de la liste. Si l'on doit

insérer " 1 » à la tête de la liste représentée par {2,3,4}, le résultat obtenu est : {1,2,3,4}

Cellule* ajout_elt(int v) {

Cellule* tete = new Cellule(v,this);

return tete; // return (new Cellule(v,this);

3.4.2. Connaître la longueur de la liste : nous devons juste balayer la liste pour connaître le nombre d'éléments

qu'elle contient. Par exemple, la liste {1,2,3,4,5} contient 5 éléments. int longueur() { int l=0;

Cellule* ref = this;

while(ref) { l++; ref = ref->prochain; return l; Chapitre 17 : Structures de données élémentaires 278

© Mohamed N. Lokbani v1.01 POO avec C++

3.4.3. Trouver le énième élément et le retourner : la liste est parcourue élément par élément jusqu'à l'index

recherché. Si ce dernier existe, l'élément correspondant est retourné. Par exemple, retourner le 3

e élément de la liste {1,2,3,4,5}. Les erreurs de déplacement ne sont pas traitées.

Cellule* nieme_cellule(int n) {

Cellule* t;

if (n==1) t=this; else t = prochain->nieme(n-1); return t;

3.4.4. Trouver le énième élément et retourner sa valeur : ce qui est différent avec 3.4.3 c'est qu'ici, on ne

retourne pas toute la cellule mais uniquement la valeur associée à cette cellule. Dans cet exemple, on retourne un

" int » car les valeurs des éléments de la liste sont des " int ». int nieme_valeur(int n) { int valeur ; if (n==1) valeur=this->valeur; else valeur = prochain->nieme(n-1)->valeur; return valeur; Chapitre 17 : Structures de données élémentaires 279

© Mohamed N. Lokbani v1.01 POO avec C++

3.4.5. Concaténer deux listes : l'opération consiste à ajouter à une liste tous les éléments d'une seconde liste. Par

exemple, concaténer les listes {1,2,3} et {4,5} donne le résultat suivant : {1,2,3,4,5}. void append(Cellule* l) { if (prochain == NULL) prochain =l; else prochain->append(l);

3.4.6. Ajouter une cellule de valeur v à la queue de la liste : dans une liste doublement chaînée, cette cellule

peut-être ajoutée aussi à la tête de la liste. void ajout_queue(int v) { if (prochain == NULL) prochain = new Cellule(v,NULL); else prochain->ajout_queue(v); Chapitre 17 : Structures de données élémentaires 280

© Mohamed N. Lokbani v1.01 POO avec C++

3.4.7. Enlever le premier élément de valeur v : on parcourt la liste à la recherche de l'élément en question. On le

retire si on le trouve. On arrête par la suite la recherche même s'il reste dans la liste des éléments ayant la valeur

recherchée.

Cellule* enlever_premier(int v) {

if (valeur == v) return prochain; else { prochain = prochain->enlever_premier(v); return this;

3.4.8. Enlever tous les éléments de valeur v : on parcourt la liste à la recherche de l'élément en question. On le

retire si on le trouve. On poursuit la recherche sur les éléments restants.

Cellule* enlever_tous(int v) {

if (valeur == v) return prochain->enlever_tous(v); else { prochain = prochain->enlever_tous(v); return this; Chapitre 17 : Structures de données élémentaires 281

© Mohamed N. Lokbani v1.01 POO avec C++

3.5 Une autre implantation de la liste

Afin de réaliser une meilleure abstraction dans l'implantation, on peut distinguer entre l'élément et la suite

d'éléments. L'élément est représenté par une cellule (noeud) et la suite d'éléments chaînés par la liste. La liste peut

garder par exemple des informations comme le nombre d'éléments qu'elle contient, un pointeur vers le premier

élément ainsi que vers le dernier élément etc. class Cellule { int valeur;

Cellule* prochain;

public:

Cellule(int v, Cellule* suivant);

Cellule* get_prochain();

void set_prochain(Cellule* suivant); int get_valeur(); class Liste {

Cellule *tete, *queue;

int longueur; etc. Chapitre 17 : Structures de données élémentaires 282

© Mohamed N. Lokbani v1.01 POO avec C++

L'ajout d'un élément se fait comme suit :

À partir de la tête

void Liste::ajout_tete(int v) {

Cellule* t = new Cellule(v,tete);

tete = t; longueur++; if (queue == NULL) queue=t; // si t est le 1er élément ajouté.

À partir de la queue

void Liste::ajout_queue(int v) { if (queue == NULL) tete=queue= new Cellule(v,NULL); else {

Cellule* t = new Cellule(v,NULL);

queue->set_prochain(t); queue = t; longueur++; Chapitre 17 : Structures de données élémentaires 283

© Mohamed N. Lokbani v1.01 POO avec C++

D'une autre liste

void Liste::ajout_liste(Liste* l) { if (queue==NULL){ queue=l->queue; tete=l->tete; }else{ queue->set_prochain(l->tete); queue = l->queue; longueur += l->longueur;

Afficher les éléments de la liste

void Liste::affiche(){

Cellule* t = tete;

while(t){ cout << t->get_valeur(); t=t->get_prochain(); if (t) cout << " "; cout << endl; Chapitre 17 : Structures de données élémentaires 284

© Mohamed N. Lokbani v1.01 POO avec C++

Exemple sur une liste d'entiers

Liste maListe; // tete=queue=null;longueur=0;

maListe.ajout_queue(1); maListe.ajout_queue(2); maListe.ajout_queue(3); maListe.ajout_tete(0); Voir les fichiers " liste.h » et " liste.cpp ».

Adresse

0

Adresse

1

Adresse

2

Adresse

3 Queue

Tête

Longueur

3 maListe null Chapitre 17 : Structures de données élémentaires 285

© Mohamed N. Lokbani v1.01 POO avec C++

4. Piles

4.1. Description de la pile

La pile décrite dans cet exemple a les caractéristiques suivantes: - C'est une structure de données contenant des éléments du type int. - Elle gère les 2 opérations : - push (empiler) - pop (dépiler)

à instant

donné après un push c après un push d après pop - Elle est du type LIFO (Last In First Out) a b a b c a b c d d a b c

Éléments

insérés dans la pile

Élément

retiré de la pile Chapitre 17 : Structures de données élémentaires 286

© Mohamed N. Lokbani v1.01 POO avec C++

4.2. Programme

Voir les fichiers " pile.h » et " pile.cpp »

4.3. Exercice

Modifier la classe " Pile » pour traiter le type " char * ».quotesdbs_dbs30.pdfusesText_36
[PDF] structure définition management

[PDF] structure synonyme

[PDF] structure architecture

[PDF] largeur moyenne peni

[PDF] taille moyenne du peni a 15 ans

[PDF] taille moyenne dun homme dans le monde

[PDF] taille moyenne poitrine

[PDF] verge image

[PDF] taille normale d'un homme

[PDF] taille moyenne homme monde

[PDF] le minus attire aussi la maousse

[PDF] pression atmosphérique terre en bar

[PDF] pression atmosphérique de mars en pa

[PDF] pression atmosphérique lune

[PDF] pression atmosphérique venus