ALGORITHMES
ET STRUCTURES DE
DONNÉES GÉNÉRIQUES
Cours et exercices corrigés
en langage C
Michel Divay
Professeur à l’université Rennes 1
2
e
édition
000Lim Divay Page I Lundi, 19. janvier 2004 10:56 10
Illustration de couverture :
Lionel Auvergne
© Dunod, Paris, 1999, 2004
ISBN 2 10 007450 4
Ce pictogramme mérite une explication.
Son objet est d’alerter le lecteur sur
la menace que représente pour l’avenir
de l’écrit, particulièrement dans
le domaine de l’édition tech-
nique et universitaire, le dévelop-
pement massif du photo-
copillage.
Le Code de la propriété
intellectuelle du 1er juillet 1992
interdit en effet expressément la
photocopie à usage collectif
sans autorisation des ayants droit. Or,
cette pratique s’est généralisée dans les
établissements d’enseignement supérieur,
provoquant une baisse brutale des achats
de livres et de revues, au point que la
possibilité même pour les auteurs
de créer des œuvres nouvelles et
de les faire éditer correctement
est aujourd’hui menacée.
Nous rappelons donc que
toute reproduction, partielle ou
totale, de la présente publication
est interdite sans autorisation du
Centre français d’exploitation du
droit de copie (CFC, 20 rue des Grands-
Augustins, 75006 Paris).
000Lim Divay Page II Lundi, 19. janvier 2004 10:56 10
© Dunod – La photocopie non autorisée est un délit.
Table des matières
AVANT-PROPOS
IX
CHAPITRE 1 •
RÉCURSIVITÉ, POINTEURS, MODULES
1
1.1 Récursivité des procédures : définition 1
1.2 Exemples de fonctions récursives 2
1.2.1 Exemple 1 : factorielle 2
1.2.2 Exemple 2 : nombres de Fibonacci 4
1.2.3 Exemple 3 : boucles récursives 7
1.2.4 Exemple 4 : numération 8
1.2.5 Exemple 5 : puissance nième d’un nombre 10
1.2.6 Exemple 6 : Tours de Hanoi 11
1.2.7 Exemple 7 : tracés récursifs de cercles 15
1.2.8 Exemple 8 : tracé d’un arbre 17
1.2.9 Conclusions sur la récursivité des procédures 19
1.3 Récursivité des objets 19
1.3.1 Rappel sur les structures 19
1.3.2 Exemple de déclaration incorrecte 20
1.3.3 Structures et pointeurs 20
1.3.4 Opérations sur les pointeurs 23
1.4 Modules 24
1.4.1 Notion de module et de type abstrait de données (TAD) 24
1.4.2 Exemple : module de simulation d’écran graphique 25
1.5 Pointeurs de fonctions 33
1.6 Résumé 34
algorTDM.fm Page III Samedi, 17. janvier 2004 10:33 10
IV
Table des matières
CHAPITRE 2 •
LES LISTES
36
2.1 Listes simples : définition 36
2.2 Représentation en mémoire des listes 37
2.3 Module de gestion des listes 38
2.3.1 Création d’un élément de liste (fonction locale au module sur les listes) 41
2.3.2 Ajout d’un objet 41
2.3.3 Les fonctions de parcours de liste 43
2.3.4 Retrait d’un objet 44
2.3.5 Destruction de listes 47
2.3.6 Recopie de listes 47
2.3.7 Insertion dans une liste ordonnée 47
2.3.8 Le module de gestion de listes 48
2.4 Exemples d’application 51
2.4.1 Le type Personne 51
2.4.2 Liste de personnes 52
2.4.3 Les polynômes 55
2.4.4 Les systèmes experts 61
2.4.5 Les piles 66
2.4.6 Les files d’attente (gérée à l’aide d’une liste) 72
2.5 Avantages et inconvénients des listes 75
2.6 Le type abstrait de données (TAD) liste 75
2.7 Les listes circulaires 75
2.7.1 Le fichier d’en-tête des listes circulaires 76
2.7.2 Insertion en tête de liste circulaire 77
2.7.3 Insertion en fin de liste circulaire 78
2.7.4 Parcours de listes circulaires 78
2.7.5 Le module des listes circulaires 79
2.7.6 Utilisation du module des listes circulaires 79
2.8 Les listes symétriques 80
2.8.1 Le fichier d’en-tête des listes symétriques 80
2.8.2 Le module des listes symétriques 81
2.8.3 Utilisation du module des listes symétriques 84
2.9 Allocation contiguë 86
2.9.1 Allocation - désallocation en cas d’allocation contiguë 86
2.9.2 Exemple des polynômes en allocation contiguë avec liste libre 87
2.9.3 Exemple de la gestion des commandes en attente 89
2.10 Résumé 100
algorTDM.fm Page IV Samedi, 17. janvier 2004 10:33 10
1 / 353 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 !