Structures de données linéaires

Save this PDF as:
 WORD  PNG  TXT  JPG

Dimension: px
Commencer à balayer dès la page:

Download "Structures de données linéaires"

Transcription

1 Structures de données linéaires I. Liste, Pile et file. Une liste linéaire est la forme la plus simple et la plus courante d'organisation des données. On l'utilise pour stocker des données qui doivent être traitées de manière séquentielle. Exemple On désire, pour les besoins de la programmation d'un jeu de cartes, représenter le paquet de cartes. Parmi toutes les informations que l'on possède sur les cartes, la plupart sont inutiles (couleur du dos, taille, matière, propriétaire ). Seuls nous intéressent, la couleur (trèfle, carreau, coeur ou pique), la hauteur (valeur de la carte), et le coté visible de la carte. Pour chacune des cartes ces informations utiles seront codées et rangées dans un article. Ainsi on effectuera le codage suivant: - pour le coté visible: Face = 1 signifie que la carte est "cachée" (dos visible) Face = 0 signifie que la carte est "visible" (face visible) - pour la couleur: couleur = 1 pour trèfle couleur = 2 pour carreau couleur = 3 pour coeur couleur = 4 pour pique - pour la hauteur: hauteur = 1 pour l'as hauteur = 2 pour le deux hauteur = 12 pour la dame hauteur = 13 pour le roi Un article aura alors la forme suivante : De plus, on pourra éventuellement adjoindre à cet article une zone "suivant" servant à indiquer l'adresse de l'élément suivant. Ainsi on aura la représentation de l'article sous la forme : page 1

2 Le paquet de quatre cartes suivant : pourra alors être représenté par : Définition Une liste linéaire est une suite finie (éventuellement vide) d'articles de même type X[1], X[2],, X[N] avec N>0, dont la propriété est qu'il est linéaire (une dimension), ordonné et : si N>0 alors X[1] est le premier article si 1<k<N alors X[k] est précédé de X[k-1] et est suivi de X[k+1]. Les articles sont repérés selon leur rang dans la liste mais il ne faut pas confondre le rang et la position! Les opérations que l'on peut désirer réaliser sur une telle structure sont entre autres : - examiner le kième élément de la liste - insérer un élément avant le kième élément de la liste - supprimer le kième élément de la liste - réunir deux listes - rechercher les articles dont une zone contient une certaine valeur - etc Il existe différents type de listes linéaires. Un exemple tiré de la vie courante peut être le rangement de vêtements et son organisation comportemental. Dans certains types de listes les opérations d'insertion et de suppression se déroulent toujours aux extrémités de la liste. Ces types de listes se rencontrant très fréquemment, on leur a donné un nom. Définition Une Pile est une structure de données linéaire dans laquelle les opérations d'insertion et de suppression se font à une extrémité appelée sommet. L'autre extrémité étant désignée par le terme "fond de pile". On rencontre également le terme LIFO (Last In First Out) pour désigner ce type de structure. Exemples - pile d'assiettes - pile d'un microprocesseur - une pile est utilisée pour le calcul des expressions postfixées page 2

3 Représentations Définition Une File est une structure de données linéaire dans laquelle les opérations d'insertion se font à une extrémité appelée arrière et les opérations de suppression se font à l'autre extrémité appelée front. On rencontre également le terme FIFO (Fist In Fist Out) pour désigner ce type de structure. Exemples - file de voitures - de manière générale : Les files d'attentes Représentations Définition Une queue ou double file (ou deque) est une structure de données linéaire dans laquelle les opérations d'insertion et de suppression se font aux deux extrémités. Représentation Remarque On distingue également les Queues à entrée restreinte (QER) dans lesquelles on ne peut insérer qu'à une extrémité, mais sortir aux deux extrémités; et les Queues à sortie restreinte (QSR) dans lesquelles on ne peut supprimer qu'à une extrémité, mais insérer à l'une des deux extrémités. page 3

4 II. Implantation en mémoire Nous représenterons la mémoire comme une série de cases numérotées de 1 à M. M étant le nombre de cases mémoires disponible permettant le stockage des informations. Ainsi, les articles X[ i ] sont rangés dans ces cases. L'emplacement, l'adresse d'un article X[ i ] est alors le numéro de la case où il débute. 1. La Méthode séquentielle C'est la façon la plus naturelle de procéder. En effet les articles X[ i ] de la liste linéaire sont rangés, les uns à la suite des autres, dans des cases mémoires consécutives. Ainsi, si chaque article a besoin de C cases mémoires pour son stockage, on aura: Adresse de X[ j + 1 ] = Adresse de X[ j ] + C = A1 + j * C (où A1 est l'adresse de X[ 1 ]). On peut donc, sans difficulté, accéder à un article quelconque de la liste linéaire, en connaissant l'adresse de base A1. Par la suite nous supposerons, pour plus de commodité, que C = 1 et A1 = 1. Etudions, à présent les cas particuliers de la pile et de la file. a. Cas d'une pile Les opérations d'insertion et de suppression se font à une extrémité (sommet). Il faut donc connaître en permanence l'adresse de celle-ci. Pour cela, on utilisera un pointeur T qui nous indiquera où se trouve le sommet. Primitives Les opérations de base sur les piles sont simples : empiler(p,e) : empile l'élément e dans la pile p. dépiler(p) : dépile un élément de la pile p et renvoie cette valeur. page 4

5 Les opérations d'insertion et de suppression pourrons alors se réaliser avec les instructions suivantes : Insertion de Y T = T + 1; X [ T ] = Y; Suppression Y = X [ T ]; T = T - 1; Mais ici se pose deux problèmes: - vouloir supprimer un élément alors que la pile est vide - vouloir insérer un élément alors que la pile est pleine (les M cases mémoires réservées à la pile sont occupées). Il va donc falloir gérer ces exceptions et on écrira alors: Insertion de Y si (T == M) alors PLEIN(); { T = T + 1; X [ T ] = Y; Suppression si (T == 0) alors VIDE(); { Y = X [ T ]; T = T - 1; Où VIDE() et PLEIN() simulent les exceptions (appel à une procédure d'erreur, sortie du traitement, etc). b. Cas d'une file Les opérations d'insertion se font à une extrémité (arrière) et les opérations de suppression se font à l'autre extrémité (front). Il faut donc connaître en permanence l'adresse de celles-ci. Pour cela, on utilisera un pointeur F qui nous indiquera où se trouve le front et un pointeur A qui nous indiquera où se trouve l'arrière. Les opérations d'insertion et de suppression pourrons alors se réaliser avec les instructions suivantes : Insertion de Y A = A + 1; X [ A ] = Y; Suppression Y = X [ F ]; F = F + 1; A nouveau ici se pose deux problèmes: - vouloir supprimer un élément alors que la file est vide - vouloir insérer un élément alors que la file est pleine (les M cases mémoires réservées à la file sont occupées). page 5

6 De plus, le fait que les deux pointeurs soient incrémentés lors de chaque opération signifie que l'on risque de se retrouver dans le cas où le début de mémoire est inoccupé, le pointeur A étant en fin de mémoire (A = M) et interdire ainsi les opérations d'insertions. Pour ne pas interrompre le traitement, dans un tel cas de figure, on va supposer la mémoire comme étant circulaire. La file X pourra alors prendre la forme suivante: Il reste encore un problème à résoudre. En effet, dans une telle configuration, les tests de file vide et de file pleine sont identiques (A = F - 1). Pour pouvoir différencier les deux cas, on va supposer que la case pointée par F est "interdite" pour le stockage d'un élément de la file. Les opérations d'insertion et de suppression pourront alors se réaliser avec les instructions suivantes: Insertion de Y si ((A == F-1) ou (A == M et F == 1)) PLEIN(); { si (A == M) alors A = 1; A = A + 1; X [A] = Y; Suppression si (A == F) alors VIDE(); { si (F == M) alors F = 1; F = F + 1; Y = X [F]; Le problème de la différentiation entre une liste pleine et une liste vide aurait pu aussi se résoudre en ajoutant une variable booléenne qui passerai de vrai à faux dès la première insertion d un élément. page 6

7 Remarquons aussi que l on peut à tout moment connaître le nombre d éléments de la file : - Si A > F, il s agit de A - F. - Si A <= F, il s agit de M - F + A. 2. Les listes «chaînées» Une autre approche traditionnelle pour implanter une liste est l utilisation de pointeurs. De cette façon, la mémoire est allouée dynamiquement : la réservation de l espace se fait en fonction des données insérées ou supprimées. a. Listes simplement chaînées On ajoute à chaque article un information complémentaire qui pointe vers l article suivant. L ensemble sera appelé un maillon ou un noeud. On peut représenter ce type de liste de la façon suivante : Noeud Tête de liste Fin de liste La tête de liste est une variable qui va «pointer» le premier élément de la liste. Chaque article (noeud) est composer de son information et d un pointeur vers le noeud suivant. Le dernier article n ayant pas de suivant pointe vers vide, nil ou null représenté dans l exemple suivant par /. La linéarité de cette représentation est purement virtuelle. En effet, les éléments n'ont aucune raison d'être ordonnés ou contigus en mémoire. Chaque élément est lié à son successeur. Il n'est donc pas possible d'accéder directement à un élément quelconque de la liste. On peut simuler ce type de liste dans un tableau : Début de liste rang valeur suivant 1 / 3 0 Fin de chaînage Mais en utilisant un tableau, on perd évidemment le côté dynamique de l allocation de la mémoire. page 7

8 Primitives tetedeliste(lst) : permet d accéder au pointeur désignant la tête de liste de la liste lst. valeur(p,lst) ou plus simplement valeur(p): permet d accéder à la valeur du noeud pointé par p de la liste lst. suivant(p,lst)ou plus simplement suivant(p): permet d accéder au suivant du noeud pointé par p de la liste lst. Si on s intéresse un peu plus à l allocation mémoire, on peut aussi considérer des fonctions qui initialise une liste, crée un noeud pointé par p ou libère l espace mémoire d un noeud pointé par p. Insertion d un élément dans une liste chaînée Il y a trois cas différents que nous devons traiter : l insertion en début de liste, au sein de la liste et en fin de liste. Insertion en début de liste : p = creernoeud(); // Ces deux lignes sont inutiles valeur(p) = information; // si le noeud existe déjà. suivant(p) = tetedeliste(lst); tetedeliste(lst) = p; Remarquons que cette suite d instructions convient pour une insertion dans une liste vide. Insertion après un noeud pointé par q : p = creernoeud(); valeur(p) = information; suivant(p) = suivant(q); suivant(q)= p; Insertion en fin de liste : Il faut en premier lieu parcourir toute la liste et ensuite insérer après le dernier élément de celle-ci. p = creernoeud(); valeur(p) = information; si (tetedeliste(lst) == NIL) { suivant(p) = NIL; tetedeliste(lst) = p; { q = tetedeliste(lst); tant que (suivant(q)!= NIL) { q = suivant(q); suivant(p) = NIL; suivant(q)= p; Suppression d un élément dans une liste chaînée Nous nous intéressons à la suppression du noeud pointé par p dans une liste lst. Le problème consiste à retrouver le prédécesseur de p. page 8

9 Exercice si (tetedeliste(lst) == p) tetedeliste(lst) = suivant(p); { tant que (suivant(q)!= p) q = suivant(q); suivant(q) = suivant(p); Trouver un algorithme qui donne le nombre d éléments d une liste chaînée lst. Correction Exercice si (tetedeliste(lst) == NIL) nbr = 0; { q = tetedeliste(lst); nbr = 1; tant que (suivant(q)!= NIL) { nbr = nbr + 1; q = suivant(q); Trouver un algorithme donnant le maximum des valeurs d une liste chaînée non vide d entiers lst. Correction q = tetedeliste(lst); max = valeur(q); tant que (suivant(q)!= NIL) { q = suivant(q); si (valeur(q) > max) max = valeur(q); Exercices supplémentaires a. Ecrire une fonction qui indique si une valeur fait partie d une liste. b. Ecrire une fonction qui renvoie la n-ième valeur d'une liste (traiter les cas où il n y a pas de n-iéme élément. c. Ecrire une fonction qui concatène deux listes lst1 et lst2. d. Ecrire une fonction qui renverse une liste lst pour obtenir une liste lstinverse. e. Ecrire une fonction qui insère un élément p dans une liste lst (non vide) triée par ordre croissant. f. Ecrire une fonction qui fusionne deux listes non vides lst1 et lst2 triées pour obtenir de nouveau une liste triée lst. page 9

10 b. Listes doublement chaînées Le parcours d une liste chaînée se fait en sens unique. Cela complique bien des problèmes. Une solution apportée à ce parcours et de faire appel à une liste doublement chaînée. Ce type de liste est similaire à une liste chaînée à ceci près que l on adjoint à chaque noeud une information qui est l adresse de son prédécesseur. Exemple De nouveau, cette linéarité est purement virtuelle. Tout comme pour la liste chaînée, les noeuds ne sont pas nécessairement adjacents et/ou ordonnés en mémoire. Primitives En plus des primitives des listes simplement chaînées, c est-à-dire : tetedeliste(lst), valeur(p)et suivant(p), nous avons : findeliste(lst)qui permet d accéder au pointeur désignant la fin de liste de la liste lst. precedent(p)qui permet d accéder au précèdent du noeud pointé par p. Insertion d un élément dans une liste doublement chaînée De même que pour les listes simplement chaînées, il y a trois cas différents que nous devons traiter : l insertion en début de liste, au sein de la liste et en fin de liste. On gérera en même temps les exceptions. Insertion en début de liste : p = creernoeud(); // Ces deux lignes sont inutiles valeur(p) = information; // si le noeud existe déjà. si tetedeliste(lst) == NIL) { findeliste(lst) = p; suivant(p) = NIL; /* idem a */ precedent(p) = NIL; /* idem b */ tetedeliste(lst) = p; /* idem c */ { precedent(tetedeliste(lst)) = p; suivant(p) = tetedeliste(lst); /* idem a */ precedent(p) = NIL; /* idem b */ tetedeliste(lst) = p; /* idem c */ page 10

11 Remarquons que les lignes /* idem a */, /* idem b */ et /* idem c */ des deux cas effectuent les même opérations et peuvent donc être exclues du test et placées en fin d instructions. Insertion en fin de liste : p = creernoeud(); valeur(p) = information; si (findeliste(lst) == NIL) debutdeliste = p; suivant(findeliste(lst)) = p; precedent(p) = findeliste(lst); suivant(p) = NIL; findeliste(lst) = p; Insertion après un noeud pointé par q : si (q == findeliste(lst)) { insérer en fin de liste { p = creernoeud(); valeur(p) = information; suivant(p) = suivant(q); precedent(p) = q; precedent(suivant(q)) = p; suivant(q)= p; Suppression d un élément dans une liste doublement chaînée si (tetedeliste(lst) == p) { si (findeliste(lst) == p) { tetedeliste(lst) = NIL; findeliste(lst) = NIL; { tetedeliste(lst) = suivant(p); precedent(suivant(p)) = NIL; si (findeliste(lst) == p) { findeliste(lst) = precedent(p); suivant(precedent(p)) = NIL; { suivant(precedent(p)) = suivant(p); precedent(suivant(p)) = precedent(p); Exercice Ecrire une fonction qui insère un noeud p dans une liste lst (non vide) triée par ordre croissant. page 11

12 Correction si (valeur(p) < valeur(tetedeliste(lst)) insérer p en début de liste; { q = tetedeliste(lst); tant que (valeur(p) < valeur(q)) q = suivant(q); si (q!= NIL) insérer p après le precedent de q; insérer p à la fin de la liste; Exercice Ecrire une fonction qui fusionne deux listes non vides lst1 et lst2 triées pour obtenir de nouveau une liste triée lst. Remarque 1: on n'utilisera pas la fonction de l exercice précédent. Remarque 2 : c est évidement beaucoup plus simple en récursif en considérant qu une liste est un premier élément et une liste. Correction p = tetedeliste(lst1); q = tetedeliste(lst2); tetedeliste(lst) = NIL; tant que ((p!=nil) && (q!=nil)) { si ((p!=nil) && (q!=nil)) si (valeur(p) < valeur(q)) { insérer le noeud p à la fin de la liste lst p = suivant(p); { insérer le noeud q à la fin de la liste lst q = suivant(q); si (p==nil) { insérer le noeud q à la fin de la liste lst q = suivant(q); { insérer le noeud p à la fin de la liste lst p = suivant(p); c. Listes circulaires Une liste circulaire peut être simplement chaînée ou doublement chaînée. Elle s obtient en remplaçant le ou les pointeurs NIL par le pointeur de tête de liste et, dans le cas d une liste doublement chaînée par le pointeur de début de liste. On obtient une liste qui n a ni premier ni dernier élément. Tous les noeuds sont accessibles à partir de n importe quel autre. page 12

13 III. Un exemple d'utilisation de pile : expressions arithmétiques Les piles ont de nombreuses applications : les navigateurs web (précédent), les annulateurs d actions dans un traitement de texte ou autres logiciels, les algorithmes de recherches en profondeur d un arbre ou implicitement les algorithmes récursifs de certains langages. Une des applications des piles nécessite de s y attarder un peu. Il s agit des expressions arithmétiques et de la méthode postfixée de calcul qui est utilisée par exemple dans certaines calculatrices HP. Les expressions arithmétiques sont habituellement écrites de manière infixée, c'est à dire qu un opérateur binaire est placé entre ses deux opérandes. Mais une autre façon d évaluer les expressions mathématiques consiste à placer l'opérateur après ses opérandes. C est ce qu on appelle la notation postfixée, appelée aussi notation polonaise inversée car introduite en 1920 par le polonais Jan Lukasiewicz : Cela permet d éviter les parenthèses et pas conséquent d optimiser le compilateur. Exemple s'écrit en postfixé : s'écrit en postfixé : Un intérêt de cette notation est qu'il n'y a plus besoin de connaître les priorités des opérateurs, et donc plus besoin de parenthèses (qui servent à contrer les priorités) * 5 c est-à-dire 3 + (2 * 5) s'écrit en postfixé : * + (3 + 2) * 5 s'écrit en postfixé : * * (8 + 2) s'écrit en postfixé : * * + donne en infixé : * 2 Pour effectuer un calcul en postfixé, on utilise une pile. On lit de gauche à droite et les règles sont les suivantes : Si on rencontre : - un nombre : on l'empile - un opérateur binaire: on dépile le sommet et le sous sommet on effectue le calcul sous-sommet "opération" sommet on empile le résultat - un opérateur unaire (une fonction ou le moins unaire) : on dépile le sommet on calcule la fonction pour la valeur du sommet on empile le résultat Remarque : Il faut bien différencier le moins unaire de l opérande de soustraction. Pour cela, on utilisera plutôt NEG ou +/- pour l opérateur unaire. Un autre avantage du calcul en postfixé dans une calculatrice est qu il n y a pas d état caché. L utilisateur n a pas besoin de se demander s il a bien frappé la touche + - * ou / d une calculatrice. En effet, une frappe entraîne immédiatement un calcul. D un autre côté, il ne faut pas malencontreusement frapper deux fois une touche d opération. page 13

14 Exercice Avec l'expression ci-dessous donnez les modifications de la pile en respectant les règles (en supposant la pile vide au départ) ^ * * Quelle est l écriture courant (infixée) de cette expression? Correction Il s agit de (2 + 5)% 4%(5 + 3) 2. Traducteur L inconvénient le plus important du calcul en postfixé consiste en la gymnastique intellectuelle de traduction d infixé en postfixé qui croît en complexité avec la taille de l expression à traduire. Un question naturel devient donc : y-a-t-il un algorithme pour passer d'une infixe à une postfixe? La réponse est oui : la méthode consiste à empiler les opérateurs. On lit l'expression infixée caractère par caractère. Si c'est un opérande, on l'écrit. Sinon (c'est un opérateur), si la pile est vide ou bien si l'opérateur est (strictement) plus prioritaire que l'opérateur en sommet de pile, alors on l'empile. Sinon, on dépile jusqu'à pouvoir l'empiler. Lorsqu il n y a plus d opérandes, on dépile. Remarque x y est un opérateur binaire. Il s agit de x ^ y. Exemples * devient * * 6 / devient * 2 / Pour les parenthèses : on doit empiler les ouvrantes. Quant aux fermantes, elles imposent de tout dépiler jusqu'à l'ouvrante associée. Exemple 2 * * (1 + 6 * 4) + 7 devient 2 3 * * + * * ( * (3 + 2 ) ^ 2 ) devient ^ * + * Remarque Ne pas oublier qu il y a parfois des parenthèses sous-entendues. page 14

15 Exemple 3 + 5%4 + (1 + 2) 2 = (3 + 5%4) + ((1 + 2) 2 ) et devient donc * ^ + Exercice Traduire en postfixé l expression 3& /6&7. Correction ^ * 1 6 / 7 * + page 15

Structures de données non linéaires

Structures de données non linéaires Structures de données non linéaires I. Graphes Définition Un graphe (simple) orienté G est un couple (S, A), où : S est un ensemble dont les éléments sont appelés les sommets. A est un ensemble de couples

Plus en détail

Chapitre 3 Structures de données linéaires : listes, piles et files

Chapitre 3 Structures de données linéaires : listes, piles et files Chapitre 3 Structures de données linéaires : listes, piles et files 1. Introduction Le but de ce chapitre est de décrire des représentations des structures de données de base telles les listes en général

Plus en détail

Algorithmique et Analyse d Algorithmes

Algorithmique et Analyse d Algorithmes Algorithmique et Analyse d Algorithmes L3 Info Cours 5 : Structures de données linéaires Benjamin Wack 2015-2016 1 / 37 La dernière fois Logique de Hoare Dichotomie Aujourd hui Type Abstrait de Données

Plus en détail

Structures de données, IMA S6

Structures de données, IMA S6 Structures de données, IMA S6 Arbres Binaires d après un cours de N. Devésa, Polytech Lille. Laure Gonnord http://laure.gonnord.org/pro/teaching/ Laure.Gonnord@polytech-lille.fr Université Lille 1 - Polytech

Plus en détail

EXAMEN FINAL. 2 Février 2006-2 heures Aucun document autorisé

EXAMEN FINAL. 2 Février 2006-2 heures Aucun document autorisé MIE - E ANNÉE ALGORITHMIQUE GÉNÉRALE Vincent Mousseau EXAMEN FINAL Février 006 - heures Aucun document autorisé Exercice : On s intéresse à la gestion informatique des réservations sur l année d une salle

Plus en détail

Programmation récursive

Programmation récursive Année 2004-2005 F. Lévy IUT De Villetaneuse Dép t informatique Cours d'algorithmique 2 éme Année Cours 8 Programmation récursive 1. Qu'est-ce que la programmation récursive Définition : la programmation

Plus en détail

J0MS7301 : Algorithmique et Programmation Objet. Feuille d'exercices 2. Structures

J0MS7301 : Algorithmique et Programmation Objet. Feuille d'exercices 2. Structures Master MIMSE - Spécialité 3-1ère Année J0MS7301 : Algorithmique et Programmation Objet Feuille d'exercices 2 Structures Exercice 1 : Ecrire un programme qui : dénit une structure horaire au format heures,

Plus en détail

ALGORITHMIQUE II. Récurrence et Récursivité. SMI AlgoII

ALGORITHMIQUE II. Récurrence et Récursivité. SMI AlgoII ALGORITHMIQUE II Récurrence et Récursivité Récurrence Suite récurrente: la déition d une suite est la donnée d un terme général déi en fonction du (ou des) terme(s) précédant(s) D un terme initial qui

Plus en détail

Ecole Nationale Polytechnique Département Génie Industriel Année Universitaire 2011/2012. Les Files

Ecole Nationale Polytechnique Département Génie Industriel Année Universitaire 2011/2012. Les Files . Ecole Nationale Polytechnique Département Génie Industriel Année Universitaire 2011/2012 Algorithmique et Programmation Les structures de données Les Files Introduction Une File ressemble fortement à

Plus en détail

Cours 01 - Les structures de données

Cours 01 - Les structures de données Cours 01 - Les structures de données MPSI - Prytanée National Militaire Pascal Delahaye 1 er mars 2015 Les programmes informatiques, traitent des données, créent des données et renvoient des données. Pour

Plus en détail

I Arbres binaires. Lycée Faidherbe 2014-2015. 1 Rappels 2 1.1 Définition... 2 1.2 Dénombrements... 2 1.3 Parcours... 3

I Arbres binaires. Lycée Faidherbe 2014-2015. 1 Rappels 2 1.1 Définition... 2 1.2 Dénombrements... 2 1.3 Parcours... 3 I Arbres binaires 2014-2015 Table des matières 1 Rappels 2 1.1 Définition................................................ 2 1.2 Dénombrements............................................ 2 1.3 Parcours.................................................

Plus en détail

Programmation C++ (débutant)/les tableaux statiques

Programmation C++ (débutant)/les tableaux statiques Programmation C++ (débutant)/les tableaux statiques 1 Programmation C++ (débutant)/les tableaux statiques Le cours du chapitre 6 : les tableaux statiques Les tableaux Une variable entière de type int ne

Plus en détail

Langage C/C++ TD 3-4 : Création dynamique d objets. Hubert Godfroy. 27 novembre 2014

Langage C/C++ TD 3-4 : Création dynamique d objets. Hubert Godfroy. 27 novembre 2014 Langage C/C++ TD 3-4 : Création dynamique d objets Hubert Godfroy 7 novembre 014 1 Tableaux Question 1 : Écrire une fonction prenant un paramètre n et créant un tableau de taille n (contenant des entiers).

Plus en détail

TD 1 de Langage C module Outils pour l'informatique Industrielle - Corrigés des Tds : http://www-lagis.univ-lille1.fr/~macaire/td.

TD 1 de Langage C module Outils pour l'informatique Industrielle - Corrigés des Tds : http://www-lagis.univ-lille1.fr/~macaire/td. Exercice 1 TD 1 de Langage C module Outils pour l'informatique Industrielle - Corrigés des Tds : http://www-lagis.univ-lille1.fr/~macaire/td.htm Exercices de base de Programmation Arbre Programmatique

Plus en détail

INF601 : Algorithme et Structure de données

INF601 : Algorithme et Structure de données Cours 2 : TDA Liste B. Jacob IC2/LIUM 15 février 2010 Plan 1 Définition du TDA Liste 2 Réalisation du TDA Liste 3 Type de stockage des éléments 4 Recherche d un élément Dans une liste non triée Dans une

Plus en détail

Listes de personnes et calculatrice polonaise inverse en Java

Listes de personnes et calculatrice polonaise inverse en Java Listes de personnes et calculatrice polonaise inverse en Java Université Paris Sud Motivation Le but de cet exercice est de manipuler les listes chaînées et les piles et de voir leur application en analyse

Plus en détail

Informatique / Structures de donnees / Presentation (French)

Informatique / Structures de donnees / Presentation (French) Informatique / Structures de donnees / Presentation (French) 1 de 3 STRUCTURES DE DONNEES INTRODUCTION Ce document est un résumé concernant les structures les plus classiques rencontrées en informatique

Plus en détail

Machine de Turing. Informatique II Algorithmique 1

Machine de Turing. Informatique II Algorithmique 1 Machine de Turing Nous avons vu qu un programme peut être considéré comme la décomposition de la tâche à réaliser en une séquence d instructions élémentaires (manipulant des données élémentaires) compréhensibles

Plus en détail

Listes et arbres binaires

Listes et arbres binaires Des structures de données dynamiques Listes, Listes ordonnées Arbres binaires, arbre binaires de recherche Listes chaînées Utile si le nombre d éléments n est pas connu à l avance et évolue beaucoup. Permet

Plus en détail

Série d exercices N 9 Arbres

Série d exercices N 9 Arbres Série d exercices N 9 Arbres Exercice 1 a) Ecrire une fonction ARBIN creerarbreentiers() qui permet de créer et de renvoyer l arbre d entiers suivant : b) Ecrire une fonction int feuilles(arbin a) qui

Plus en détail

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation : Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de

Plus en détail

1. Les fondements de l informatique 13

1. Les fondements de l informatique 13 Introduction à l'algorithmique 1. Les fondements de l informatique 13 1.1 Architecture de Von Neumann 13 1.2 La machine de Turing 17 1.3 Représentation interne des instructions et des données 19 1.3.1

Plus en détail

Algorithmique. Évaluation d expressions. Luc Brun. luc.brun@greyc.ensicaen.fr. Évaluation d expressions p.1/38

Algorithmique. Évaluation d expressions. Luc Brun. luc.brun@greyc.ensicaen.fr. Évaluation d expressions p.1/38 Algorithmique Évaluation d expressions Luc Brun luc.brun@greyc.ensicaen.fr Évaluation d expressions p.1/38 Plan Les différents types d expressions Expression complètement parenthésée (ECP), Expression

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Arbres binaires de recherche et arbres rouge noir

Arbres binaires de recherche et arbres rouge noir Institut Galilée lgo, rbres, Graphes I nnée 006-007 License rbres binaires de recherche et arbres rouge noir Rappels de cours et correction du TD rbres binaires de recherche : définitions Un arbre binaire

Plus en détail

Organisation des données et structures de stockage

Organisation des données et structures de stockage ING2 - ING3 Nvx 2009-2010 Organisation des données et structures de stockage IV. Structures linéaires : les files et les piles. Les files et les piles sont des listes d'éléments organisées selon l'odre

Plus en détail

Les structures de données. Rajae El Ouazzani

Les structures de données. Rajae El Ouazzani Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l

Plus en détail

Partie 3. Gilles Lebrun (gilles.lebrun@unicaen.fr)

Partie 3. Gilles Lebrun (gilles.lebrun@unicaen.fr) Partie 3 Gilles Lebrun (gilles.lebrun@unicaen.fr) Les arbres binaires Définition : C est une structure arborescente ou hiérarchique ou récursive Chaque élément (nœud) constituant la structure de l arbre

Plus en détail

Exercice 1 : Questions diverses (5 points)

Exercice 1 : Questions diverses (5 points) Université Claude Bernard Lyon 1 Licence Sciences, Technologies, Santé L2 Année 2010-2011, 2ème semestre LIF5 Algorithmique & Programmation procédurale Contrôle final du 20 juin 2011 Durée : 1h30 Note

Plus en détail

Université Paris Diderot Paris 7. TD n 2. Arbres Binaire de Recherche

Université Paris Diderot Paris 7. TD n 2. Arbres Binaire de Recherche Université Paris Diderot Paris L Informatique Algorithmique Année 00-0, er semestre TD n Arbres Binaire de Recherche Le type de donné arbre" sera utilisé pour indiquer l ensemble de toutes les Arbres Binaires

Plus en détail

Algorithmes pour les graphes

Algorithmes pour les graphes Algorithmes pour les graphes 1 Définitions Un graphe est représenté par : V : L ensemble des noeuds ou sommets. E : L ensemble des arcs ou arrêtes. E est un sous-ensemble de V xv. On note G = (V, E). Si

Plus en détail

C12. Les structures arborescentes. Août 2006

C12. Les structures arborescentes. Août 2006 Les structures arborescentes Août 2006 Objectifs du C12 Connaître le principe de la structure d arbre binaire Connaître les détails d implémentation de la structure d arbre binaire de recherche Les structures

Plus en détail

Les arbres Florent Hivert

Les arbres Florent Hivert 1 de 1 Algorithmique Les arbres Florent Hivert Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert 2 de 1 Algorithmes et structures de données La plupart des bons algorithmes fonctionnent

Plus en détail

pedigree d'un cheval Zoe ; son père est Tonnerre et sa mère Belle ; mère de Belle est Rose et père de Belle est Eclair jean jean marc paul luc

pedigree d'un cheval Zoe ; son père est Tonnerre et sa mère Belle ; mère de Belle est Rose et père de Belle est Eclair jean jean marc paul luc Chap. 3 Les arbres binaires Un arbre est un ensemble de nœuds, organisés de façon hiérarchique, à partir d'un nœud distingué, appelé racine. La structure d'arbre est l'une des plus importantes et des plus

Plus en détail

Université Bordeaux 1

Université Bordeaux 1 table des matières Université Bordeaux 1 Licence Semestre 3 - Algorithmes et structures de données 1 Dernière mise à jour effectuée le 1 Septembre 2013 Listes Déition Liste simplement chainée Liste doublement

Plus en détail

Structures de données et algorithmes

Structures de données et algorithmes Structures de données et algorithmes Chapitre 4 Les arbres Nous introduisons dans ce chapitre le TDA : arbres binaires Ce TDA est intéressant pour plusieurs raisons : Les arbres de recherche binaire permettent

Plus en détail

Algorithmique - Techniques fondamentales de programmation Exemples en Python (nombreux exercices corrigés) - BTS, DUT informatique

Algorithmique - Techniques fondamentales de programmation Exemples en Python (nombreux exercices corrigés) - BTS, DUT informatique Introduction à l'algorithmique 1. Les fondements de l informatique 13 1.1 Architecture de Von Neumann 13 1.2 La machine de Turing 17 1.3 Représentation interne des instructions et des données 19 1.3.1

Plus en détail

L2 - Algorithmique et structures de données (Année 2010/2011) Examen (2 heures)

L2 - Algorithmique et structures de données (Année 2010/2011) Examen (2 heures) L2 - lgorithmique et structures de données (nnée 2010/2011) Delacourt, Phan Luong, Poupet xamen (2 heures) Les documents (cours, TD, TP) sont autorisés. Les quatre exercices sont indépendants. À la fin

Plus en détail

Plan. Piqûre de rappel sur les références Evaluation d'expressions arithmétiques Variables et méthodes statiques Vocabulaire sur les arbres.

Plan. Piqûre de rappel sur les références Evaluation d'expressions arithmétiques Variables et méthodes statiques Vocabulaire sur les arbres. Plan Piqûre de rappel sur les références Evaluation d'expressions arithmétiques Variables et méthodes statiques Vocabulaire sur les arbres Amphi 4 1 Retour sur les références class Code { int numero; Code(int

Plus en détail

Chapitre 5 : Flot maximal dans un graphe

Chapitre 5 : Flot maximal dans un graphe Graphes et RO TELECOM Nancy A Chapitre 5 : Flot maximal dans un graphe J.-F. Scheid 1 Plan du chapitre I. Définitions 1 Graphe Graphe valué 3 Représentation d un graphe (matrice d incidence, matrice d

Plus en détail

Plan. Cours 4 : Méthodes d accès aux données. Architecture système. Objectifs des SGBD (rappel)

Plan. Cours 4 : Méthodes d accès aux données. Architecture système. Objectifs des SGBD (rappel) UPMC - UFR 99 Licence d informatique 205/206 Module 3I009 Cours 4 : Méthodes d accès aux données Plan Fonctions et structure des SGBD Structures physiques Stockage des données Organisation de fichiers

Plus en détail

Arbres ordonnés, binaires, tassés, FAP, tri par FAP, tas, tri par tas

Arbres ordonnés, binaires, tassés, FAP, tri par FAP, tas, tri par tas Arbres ordonnés, binaires, tassés, FAP, tri par FAP, tas, tri par tas 1. Arbres ordonnés 1.1. Arbres ordonnés (Arbres O) On considère des arbres dont les nœuds sont étiquetés sur un ensemble muni d'un

Plus en détail

PC* Structure de pile

PC* Structure de pile Structure de pile I. Définition........................................... 2 I.1 Introduction..................................... 2 I.2 Opérations caractérisant une structure de pile...................

Plus en détail

Eléments de syntaxe du langage Java

Eléments de syntaxe du langage Java c jan. 2014, v3.0 Java Eléments de syntaxe du langage Java Sébastien Jean Le but de ce document est de présenter es éléments de syntaxe du langage Java : les types primitifs, les opérateurs arithmétiques

Plus en détail

Initiation aux algorithmes des arbres binaires

Initiation aux algorithmes des arbres binaires Initiation aux algorithmes des arbres binaires Plan I. Les arbres biniaires I. Définition II. Représentation graphique d un arbre III. Terminologie IV. Représentation en mémoire des arbres binaires V.

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

3.3 Les Files d attente (Queues)

3.3 Les Files d attente (Queues) 3.3 Les Files d attente (Queues) 3.3.1 Définition La file d attente est une structure qui permet de stocker des objets dans un ordre donné et de les retirer dans le même ordre, c est à dire selon le protocole

Plus en détail

Arbres binaires de recherche

Arbres binaires de recherche Chapitre 6 Arbres binaires de recherche 6.1 Introduction On a étudié le problème de la recherche dans une collection d éléments ordonnés entre eux : on a montré que Pour une liste contiguë, la recherche

Plus en détail

Plan. Arbres équilibrés Arbres AVL Arbres a-b Quelques compléments de Java. Amphi 9 1

Plan. Arbres équilibrés Arbres AVL Arbres a-b Quelques compléments de Java. Amphi 9 1 Plan Arbres équilibrés Arbres AVL Arbres a-b Quelques compléments de Java Amphi 9 1 Structures d'arbre Les structures d'arbre permettent de réaliser des opérations dynamiques, telles que recherche, prédécesseur,

Plus en détail

Points fixes de fonctions à domaine fini

Points fixes de fonctions à domaine fini ÉCOLE POLYTECHNIQUE ÉCOLE NORMALE SUPÉRIEURE DE CACHAN ÉCOLE SUPÉRIEURE DE PHYSIQUE ET DE CHIMIE INDUSTRIELLES CONCOURS D ADMISSION 2013 FILIÈRE MP HORS SPÉCIALITÉ INFO FILIÈRE PC COMPOSITION D INFORMATIQUE

Plus en détail

Utilisation de SystemC pour la conception des SoC

Utilisation de SystemC pour la conception des SoC Utilisation de SystemC pour la conception des SoC aniela ragomirescu 1,2, Roberto Reyna 3 1 - Université de Toulouse : INSA Toulouse, 135 Av. de Rangueil Toulouse cedex 4 2-LAAS-CNRS ; Université de Toulouse,

Plus en détail

TD 5 LES POINTEURS. Définition: Pointeur

TD 5 LES POINTEURS. Définition: Pointeur TD 5 LES POINTEURS d'après le site de F. Faber http://www.ltam.lu/tutoriel_ansi_c Définition: Pointeur Un pointeur est une variable spéciale qui peut contenir l'adresse d'une autre variable. En C, chaque

Plus en détail

2012/2013 Le codage en informatique

2012/2013 Le codage en informatique 2012/2013 Le codage en informatique Stéphane Fossé/ Marc Gyr Lycée Felix Faure Beauvais 2012/2013 INTRODUCTION Les appareils numériques que nous utilisons tous les jours ont tous un point commun : 2 chiffres

Plus en détail

Arbres binaires de recherche (ABR) Binary Search Trees (BST)

Arbres binaires de recherche (ABR) Binary Search Trees (BST) LSVIII-BIM Algorithmie, 2015 Arbres binaires de recherche (ABR) Binary Search Trees (BST) I. Arbres binaires 1. Structure 2. Parcours II. Arbres binaires de recherche 1. Définition 2. Opérations sur les

Plus en détail

MÉRÉ Aurélien FIIFO1. Pathfinder

MÉRÉ Aurélien FIIFO1. Pathfinder MÉRÉ Aurélien FIIFO1 AMC Pathfinder 1 Sommaire Préambule... 3 Modélisation de l espace... 4 Modélisation des cases δ, α... 4 Interface en mode texte... 5 Modélisation du robot... 8 1 ) Le type Robot...

Plus en détail

Bases de données. Cours 2 : Stockage

Bases de données. Cours 2 : Stockage Bases de données Polytech Paris-Sud Apprentis 4 ème année Cours 2 : Stockage kn@lri.fr http://www.lri.fr/~kn Plan 1 Rappels 2 Stockage 2.1 Introduction 2.2 Aspects bas-niveau 2.3 Stockage pour les SGBD

Plus en détail

Cours d Algorithmique et Complexité

Cours d Algorithmique et Complexité Cours d Algorithmique et Complexité Structures de données (2e suite) Catalin Dima Arbres binaires de recherche Propriété de base des arbres binaires de recherche Soit x un noeud de l arbre. Alors : 1.

Plus en détail

Structure fonctionnelle d un SGBD

Structure fonctionnelle d un SGBD Fichiers et Disques Structure fonctionnelle d un SGBD Requetes Optimiseur de requetes Operateurs relationnels Methodes d acces Gestion de tampon Gestion de disque BD 1 Fichiers et Disques Lecture : Transfert

Plus en détail

4.2 Les arbres binaires de recherche

4.2 Les arbres binaires de recherche 4.2 Les arbres binaires de recherche 4.2.1 Définition Les arbres binaires de recherche sont utilisés pour accélérer la recherche dans les arbres m-aires. Un arbre binaire de recherche est un arbre binaire

Plus en détail

BAZIN Danil et PRIEZ Jean-Baptiste. LEX & YACC : Calculatrice Évoluée

BAZIN Danil et PRIEZ Jean-Baptiste. LEX & YACC : Calculatrice Évoluée BAZIN Danil et PRIEZ Jean-Baptiste LEX & YACC : Calculatrice Évoluée Table des matières 1 Introduction 3 2 Description 4 3 La grammaire utilisée 6 4 Lexèmes et FLEX 8 5 Analyse syntaxique et YACC 8 5.1

Plus en détail

Arbres binaires de recherche

Arbres binaires de recherche Chapitre 1 Arbres binaires de recherche 1 Les arbre sont très utilisés en informatique, d une part parce que les informations sont souvent hiérarchisées, et peuvent être représentées naturellement sous

Plus en détail

Arbres de segments. Plan. Arbres de segments. Arbres de sélection Listes à saut Compléments de Java Dictionnaires Automates. Solution.

Arbres de segments. Plan. Arbres de segments. Arbres de sélection Listes à saut Compléments de Java Dictionnaires Automates. Solution. Plan Arbres de segments Arbres de segments Arbres de sélection Listes à saut Compléments de Java Dictionnaires Automates Problème : Chercher, dans un ensemble d intervalles de la droite réelle, les intervalles

Plus en détail

Partie I : Automates et langages

Partie I : Automates et langages 2 Les calculatrices sont interdites. N.B. : Le candidat attachera la plus grande importance à la clarté, à la précision et à la concision de la rédaction. Si un candidat est amené à repérer ce qui peut

Plus en détail

Chargement de processus Allocation contigüe Allocation fragmentée Gestion de pages. Gestion mémoire. Julien Forget

Chargement de processus Allocation contigüe Allocation fragmentée Gestion de pages. Gestion mémoire. Julien Forget Julien Forget Université Lille 1 École Polytechnique Universitaire de Lille Cité Scientifique 59655 Villeneuve d Ascq GIS 3 2011-2012 1 / 46 Rôle du gestionnaire de mémoire Le gestionnaire de mémoire a

Plus en détail

alg - Arbres binaires de recherche [br] Algorithmique

alg - Arbres binaires de recherche [br] Algorithmique alg - Arbres binaires de recherche [br] Algorithmique Karine Zampieri, Stéphane Rivière, Béatrice Amerein-Soltner Unisciel algoprog Version 25 avril 2015 Table des matières 1 Définition, Parcours, Représentation

Plus en détail

TP 8 : Arbres binaires de recherche

TP 8 : Arbres binaires de recherche TP 8 : Arbres binaires de recherche Semaine du 17 Mars 2008 Exercice 1 Dénir une structure struct noeud_s permettant de coder un n ud d'un arbre binaire contenant une valeur entière. Ajouter des typedef

Plus en détail

Machines composées de (depuis 1940 env.) : http://cui.unige.ch/isi/cours/std/

Machines composées de (depuis 1940 env.) : http://cui.unige.ch/isi/cours/std/ données pr ogramme 11111101 11001101 01000101 b us disque ma gnétique processeur écran Structures de données et algorithmes Ordinateurs Gilles Falquet, printemps-été 2002 Machines composées de (depuis

Plus en détail

Algorithmique IN102 TD 3

Algorithmique IN102 TD 3 Algorithmique IN10 TD 16 décembre 005 Exercice 1 Clairement, il existe des arbres de hauteur h à h + 1 éléments : il sut pour cela que leurs n uds internes aient au plus un ls non vide. On a alors un arbre

Plus en détail

Chapitre 3 : Pointeurs et références

Chapitre 3 : Pointeurs et références p. 1/18 Chapitre 3 : Pointeurs et références Notion de pointeur L adresse d une variable est une valeur. On peut donc la stocker dans une variable. Un pointeur est une variable qui contient l adresse d

Plus en détail

Département Informatique Programmation objet. Cours n 8. Structures de données partie 3 Arbres binaires de calcul

Département Informatique Programmation objet. Cours n 8. Structures de données partie 3 Arbres binaires de calcul Programmation objet Cours n 8 Structures de données partie 3 Arbres binaires de calcul 1 Arbre binaire de calcul Nous avons vu l'utilisation des arbres binaires en tant que structure de données optimisée

Plus en détail

Architecture des ordinateurs TP 3

Architecture des ordinateurs TP 3 Architecture des ordinateurs ESIPE - IR1 TP 3 Objectif de cette séance L objectif de cette séance est d apprendre à utiliser la pile et à écrire des fonctions en assembleur En particulier, nous verrons

Plus en détail

Initiation à la Programmation en Logique avec SISCtus Prolog

Initiation à la Programmation en Logique avec SISCtus Prolog Initiation à la Programmation en Logique avec SISCtus Prolog Identificateurs Ils sont représentés par une suite de caractères alphanumériques commençant par une lettre minuscule (les lettres accentuées

Plus en détail

Introduction Tableaux / Vecteurs Listes chaînées Un principe général Quelques algorithmes de tri À faire pour lundi prochain. Tableaux VS Listes

Introduction Tableaux / Vecteurs Listes chaînées Un principe général Quelques algorithmes de tri À faire pour lundi prochain. Tableaux VS Listes Tableaux VS Listes Tableaux VS Listes Petit chapitre. Plan Introduction Tableaux / Vecteurs Définition abstraite Qu a-t-on fait avec des vecteurs? Que peut-on faire avec des vecteurs? Listes chaînées Définition

Plus en détail

Plan. Bases de données. Cours 2 : Stockage. Quels types de mémoire pour une BD? Où stocker les données? Polytech Paris-Sud. Apprentis 4 ème année

Plan. Bases de données. Cours 2 : Stockage. Quels types de mémoire pour une BD? Où stocker les données? Polytech Paris-Sud. Apprentis 4 ème année Bases de données Polytech Paris-Sud Apprentis 4 ème année Cours 2 : Stockage 2.1 Introduction 2.2 Aspects bas-niveau kn@lri.fr http://www.lri.fr/~kn 2/20 Hierarchie mémoire : Où stocker les données? Type

Plus en détail

Arnaud DABOUIS Vincent HURBOURQUE IMAC 1. PROJET C : Traitement d images

Arnaud DABOUIS Vincent HURBOURQUE IMAC 1. PROJET C : Traitement d images PROJET C : Traitement d images 1 SOMMAIRE 1) Schéma et structure a) Schéma de la structure b) Les structures utilisées La structure image La structure calque La structure LUT La structure Historique et

Plus en détail

LibreOffice Calc : introduction aux tableaux croisés dynamiques

LibreOffice Calc : introduction aux tableaux croisés dynamiques Fiche logiciel LibreOffice Calc 3.x Tableur Niveau LibreOffice Calc : introduction aux tableaux croisés dynamiques Un tableau croisé dynamique (appelé Pilote de données dans LibreOffice) est un tableau

Plus en détail

Algorithmique avancée en Python TDs

Algorithmique avancée en Python TDs Algorithmique avancée en Python TDs Denis Robilliard sept. 2014 1 TD 1 Révisions 1. Ecrire un programme qui saisit un entier, et détermine puis affiche si l entier est pair où impair. 2. Ecrire un programme

Plus en détail

Représentation des Nombres

Représentation des Nombres Chapitre 5 Représentation des Nombres 5. Representation des entiers 5.. Principe des représentations en base b Base L entier écrit 344 correspond a 3 mille + 4 cent + dix + 4. Plus généralement a n a n...

Plus en détail

Introduction à l Informatique

Introduction à l Informatique Introduction à l Informatique. Généralités : Etymologiquement, le mot informatique veut dire «traitement d information». Ceci signifie que l ordinateur n est capable de fonctionner que s il y a apport

Plus en détail

Représentation des nombres entiers et réels. en binaire en mémoire

Représentation des nombres entiers et réels. en binaire en mémoire L3 Mag1 Phys. fond., cours C 15-16 Rep. des nbs. en binaire 25-09-05 23 :06 :02 page 1 1 Nombres entiers 1.1 Représentation binaire Représentation des nombres entiers et réels Tout entier positif n peut

Plus en détail

Structure de PILE. Nour-Eddine Oussous. Plan. Introduction. La structure de pile. Réalisation USTL DEUST TIC-RM. 15 décembre 2009

Structure de PILE. Nour-Eddine Oussous. Plan. Introduction. La structure de pile. Réalisation USTL DEUST TIC-RM. 15 décembre 2009 USTL DEUST TIC-RM 15 décembre 2009 du cours 1 Objectif Exemple introductif 2 Description Opérations primitives 3 Interface Implémentation Exemple d utilisation Objectif Présenter une structure de données

Plus en détail

6. Hachage. Accès aux données d'une table avec un temps constant Utilisation d'une fonction pour le calcul d'adresses

6. Hachage. Accès aux données d'une table avec un temps constant Utilisation d'une fonction pour le calcul d'adresses 6. Hachage Accès aux données d'une table avec un temps constant Utilisation d'une fonction pour le calcul d'adresses PLAN Définition Fonctions de Hachage Méthodes de résolution de collisions Estimation

Plus en détail

Algorithmique et Structures de données Feuille 5 : Arbres binaires

Algorithmique et Structures de données Feuille 5 : Arbres binaires Université Bordeaux Algorithmique et Structures de données Feuille : Arbres binaires On considère le type abstrait arbrebinaire d objet défini en cours. Pour rappel voir annexe A. LicenceInformatique0-0

Plus en détail

Les types utilisateurs (VBA) Corrigé

Les types utilisateurs (VBA) Corrigé PAD INPT ALGORITHMIQUE ET PROGRAMMATION 1 Cours VBA, Semaine 2 avril mai 2013 Corrigé Résumé Ce document décrit comment traduire en VBA les types utilisateur du langage algorithmique. Table des matières

Plus en détail

Programmation : projet réussites

Programmation : projet réussites 1 Université Joseph Fourier Master CCI UE Programmation Année 2015-16 Programmation : projet réussites Une réussite est un jeu de cartes en solitaire. On vous fournit un logiciel permettant de programmer

Plus en détail

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping Chapitre V : La gestion de la mémoire Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping Introduction Plusieurs dizaines de processus doivent se partager

Plus en détail

Module ITC34 - Algorithmique et Programmation

Module ITC34 - Algorithmique et Programmation Module ITC34 - Algorithmique et Programmation TDs Algorithmique (trois séances) Benoît Darties - benoit.darties@u-bourgogne.fr Univ. Bourgogne Franche-Comté Année universitaire 2015-2016 Avant-propos :

Plus en détail

UNIVERSITÉ DE CERGY. LICENCE d ÉCONOMIE et FINANCE LICENCE de GESTION. Seconde année - Semestre 3 PROBABILITÉS. Cours de M. J.

UNIVERSITÉ DE CERGY. LICENCE d ÉCONOMIE et FINANCE LICENCE de GESTION. Seconde année - Semestre 3 PROBABILITÉS. Cours de M. J. Année 2013-2014 UNIVERSIÉ DE CERGY LICENCE d ÉCONOMIE et FINANCE LICENCE de GESION Seconde année - Semestre 3 PROBABILIÉS Cours de M. J. Stéphan ravaux Dirigés de Mme M. Barrié, M. J-M. Chauvet et M. J.

Plus en détail

Séance de travaux pratiques n 1 Quelques éléments de correction

Séance de travaux pratiques n 1 Quelques éléments de correction Master Sciences, Technologies, Santé Mention Mathématiques, spécialité Enseignement des mathématiques Algorithmique et graphes, thèmes du second degré Séance de travaux pratiques n 1 Quelques éléments

Plus en détail

Objectifs du cours d aujourd hui. Informatique I : Cours d introduction à l informatique et à la programmation Structures de Données Abstraites & Tris

Objectifs du cours d aujourd hui. Informatique I : Cours d introduction à l informatique et à la programmation Structures de Données Abstraites & Tris Objectifs du cours d aujourd hui Informatique I : Cours d introduction à l informatique et à la programmation Structures de Données Abstraites & Tris Continuer l approfondissement de la programmation de

Plus en détail

Option Informatique Arbres binaires équilibrés

Option Informatique Arbres binaires équilibrés Option Informatique Arbres binaires équilibrés Sujet novembre 2 Partie II : Algorithmique et programmation en CaML Cette partie doit être traitée par les étudiants qui ont utilisé le langage CaML dans

Plus en détail

Université Bordeaux 1, Licence Semestre 3 - Algorithmes et struct...

Université Bordeaux 1, Licence Semestre 3 - Algorithmes et struct... Université Bordeaux 1 table des matières Licence Semestre 3 - Algorithmes et structures de données 1 Dernière mise à jour effectuée le 23 Octobre 2013 Piles et Files Déitions Primitives de piles, exemples

Plus en détail

Enveloppes convexes dans le plan

Enveloppes convexes dans le plan ÉCOLE POLYTECHNIQUE ÉCOLES NORMALES SUPÉRIEURES ÉCOLE SUPÉRIEURE DE PHYSIQUE ET DE CHIMIE INDUSTRIELLES CONCOURS D ADMISSION FILIÈRE MP HORS SPÉCIALITÉ INFO FILIÈRE PC COMPOSITION D INFORMATIQUE B (XECLR)

Plus en détail

Licence STPI Semestre 3 - Examen de Validation de Module - Janvier 2006 ULSI301 - LANGAGE C

Licence STPI Semestre 3 - Examen de Validation de Module - Janvier 2006 ULSI301 - LANGAGE C Licence STPI Semestre 3 - Examen de Validation de Module - Janvier 2006 ULSI301 - LANGAGE C Durée : 2h. - Documents et Calculatrices autorisés. Toutes les réponses doivent être justifiées - Les exercices

Plus en détail

Parcours d un graphe ISN 2013. Jean-Manuel Mény IREM de LYON () Algorithmique ISN 2013 1 / 97

Parcours d un graphe ISN 2013. Jean-Manuel Mény IREM de LYON () Algorithmique ISN 2013 1 / 97 Parcours d un graphe ISN 2013 Jean-Manuel Mény IREM de LYON () Algorithmique ISN 2013 1 / 97 Exercices à rendre Trois exercices sont à rendre. L exercice 1 pourra être rendu sur papier mardi 2 avril (ou

Plus en détail

Les systèmes de Fichier

Les systèmes de Fichier Les systèmes de Fichier 1 Les disques durs, aussi petits soient-ils, contiennent des millions de bits, il faut donc organiser les données afin de pouvoir localiser les informations, c'est le but du système

Plus en détail

Exercice sur les arbres binaires de recherche

Exercice sur les arbres binaires de recherche Exercice sur les arbres binaires de recherche Voici une liste aléatoire de 1 éléments. Notez que vous pouvez faire cet exercice en prenant une autre liste aléatoire ; évidemment, il y a peu de chances

Plus en détail

Info0101 Intro. à l'algorithmique et à la programmation. Cours 5. Tableaux

Info0101 Intro. à l'algorithmique et à la programmation. Cours 5. Tableaux Info0101 Intro. à l'algorithmique et à la programmation Cours 5 Tableaux Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

Types et Structures de Données LI213

Types et Structures de Données LI213 Types et Structures de Données LI213 Interrogation du 3 mars 2013 Aucun document n est autorisé. 1 Listes, piles et files Pour l exercice suivant, on a besoin de définir une liste chaînée de personnes.

Plus en détail

Arbres binaires Version prof Version prof

Arbres binaires Version prof Version prof Arbres binaires Version prof Version prof types /* déclaration du type t_element */ t_arbrebinaire = t_noeudbinaire t_noeudbinaire = enregistrement t_element cle t_arbrebinaire fg, fd n enregistrement

Plus en détail