INSIA – ALGORITHMIQUE - 1 – ING 1 – Cours 02 - page 1/26 - Bertrand LIAUDET
INSIA – ING 1
Algorithmique – 2
Structures de données – TAD
Pointeurs - Récursivité
Bertrand LIAUDET
SOMMAIRE
SOMMAIRE 1
0 - INTRODUCTION 3
1. Structure de données 3
2. Contenu pédagogique 3
1 - LES ENREGISTREMENTS 4
1. Présentation 4
2. Renommer un type 5
2 - LES TABLEAUX 6
1. Présentation 6
2. thodes de recherche 6
3. thodes de tri 6
4. Exercices sur les tableaux 7
3 - LES TAD 9
1. Présentation générale des TAD 9
2. Les chaînes de caractères 9
3. Les piles 9
4. Les files 10
5. Les collections 11
6. Les fichiers 11
4 - LES POINTEURS 12
1. Rappels sur la variable 12
2. Pointeurs et opérateur & et * 12
3. Exercices sur les pointeurs 13
INSIA – ALGORITHMIQUE - 1 – ING 1 – Cours 02 - page 2/26 - Bertrand LIAUDET
5 - LES LISTES 15
1. Présentation 15
2. Liste simplement chaînées 15
3. Variantes 15
4. Exercices sur les listes 15
6 - USAGES TECHNIQUES DES POINTEURS 17
1. Gestion d’une pile LIFO avec une liste chaînée 17
2. Gestion d’une file FIFO avec une liste chaînée 17
3. Pointeurs et tableaux 17
4. Pointeurs et chaînes de caractères 17
5. Pointeurs et mode de passage des paramètres 17
7 - RECURSIVITE 18
8 - LES ARBRES 19
1. Présentation 19
2. ABOH – Arbre planaire 19
3. Arbres équilibrés (AVL) 21
4. Arbres B (B trees) 21
5. Arbres BB 22
6. Arbres SBB (bicolores). 22
7. Exercices sur les ABOH 22
9 - LES GRAPHES 24
1. Présentation 24
10 - HACHAGE 25
1. Présentation 25
11 - TAD : LES FICHIERS 26
1. Présentation 26
INSIA – ALGORITHMIQUE - 1 – ING 1 – Cours 02 - page 3/26 - Bertrand LIAUDET
0 - INTRODUCTION
1. Structure de données
Dans la première partie du cours d’algorithmique, on a travaillé uniquement sur les types simples : entier, réel,
caractère et booléen. Le type chaîne de caractères a été abordé sans plus.
Dans ce cours, on va présenter différentes sortes de structures de données.
Une structure de données est un mode particulier d’organisation des données.
On peut aussi créer des types abstraits de données, TAD, qui se caractérise par un type particulier et par un jeu de
primitives (procédures et fonctions) permettant d’exploiter le type sans avoir à connaître les tails de son
implémentation.
Pour travailler sur les structures de données, on sera amener à aborder le type « pointeur » et la récursivité.
2. Contenu pédagogique
1. Enregistrements
2. Tableaux : tableau à 1, 2, n dimensions, tableau d’enregistrements, enregistrement de tableaux.
3. TAD : chaînes de caractères, piles, files, collection.
4. Imbrications de types: Tableau de structures, Tableau de pointeurs
5. Pointeurs.
6. Listes : liste simplement chaînée, liste doublement chaînée, liste circulaire.
7. Pointeurs, pile et files.
8. Pointeurs, tableaux, chaînes de caractères.
9. Pointeurs et mode de passage des paramètres d’appel
10. Récursivi.
11. Arbres : arbres binaires, arbres équilibrés (AVL), arbres B (B tree), arbres bicolores (SBB), arbres planaires.
12. Graphes : graphes non orientés, graphes orientés, graphes valués.
13. Hachage.
14. TAD : fichiers
INSIA – ALGORITHMIQUE - 1 – ING 1 – Cours 02 - page 4/26 - Bertrand LIAUDET
1 - LES ENREGISTREMENTS
1. Présentation
Un enregistrement est un type de donnée permettant d’avoir dans une me variable plusieurs informations
pouvant être de type différent.
On parle d’enregistrement ou de structure.
Usages
Exemple trai
On veut définir un type de donnée correspondant à un élève. Un élève a un nom, un prénom et une note.
Définition du type
struct typEleve
nom : chaîne
prénom : chaîne
note : entier
fin
commentaires
On utilise le mot-clé « struct » pour déclarer le nouveau type. On peut aussi utiliser le mot clé
« enregistrement ».
typEleve est le nom du type créé. Il pourra s’utiliser comme n’importe quel type simple.
« nom », « prénom » et « note » sont trois champs typés.
Déclaration de variables
e1, e2, e3 : typEleve
Utilisation des variables
e1.nom « toto »
e1.prenom « olivier »
e1.note 12
e2.note e1.note // affectation d’un champs
e3 e1 // affectation globale de l’enregistrement
Structures complexes
Exemple trai
On veut définir un type de donnée correspondant à un élève. Un élève a un nom, un prénom. Il a un note par
matière, et il y a plusieurs matières
Définition des types
struct typMatiere
INSIA – ALGORITHMIQUE - 1 – ING 1 – Cours 02 - page 5/26 - Bertrand LIAUDET
nomMatiere : chaîne
note : entier
fin
struct typEleve
nom : chaîne
prénom : chaîne
tabMatières[NMAX] : typMatiere
fin
Déclaration de variables
e1, e2 : typEleve
Utilisation des variables
e1.nom « toto »
e1.prenom « olivier »
e1.tabMatiere[1].nomMatiere « algo »
e1.tabMatiere[1].note 12
e1.tabMatiere[2].nomMatiere « langage C »
e1.tabMatiere[2].note 15
e2.tabMatiere[1].nomMatiere e1.tabMatiere[1].nomMatiere
e2.tabMatiere[1].note e1.tabMatiere[1].note
e2.tabMatiere[2] e1.tabMatiere[2]
e2.tabMatiere[2].note e1.tabMatiere[2]
e3 e1
2. Renommer un type
Il peut être pratique de pouvoir renommer un type.
On utilisera la syntaxe suivante :
Syntaxe
type classe as tableau[50] typEleve
commentaires
On utilise le mot-c« type » pour renommer un type et le mot-c« as » pour séparer l’ancien nom du nouveau
nom.
« classe » est le nouveau nom.
tableau[50] typEleve est le type qu’on veut renommer.
Usage
Le type « classe » s’utilise comme n’importe quel type :
cl1, cl2 : classe
1 / 26 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !