Docsity
Docsity

Prépare tes examens
Prépare tes examens

Étudies grâce aux nombreuses ressources disponibles sur Docsity


Obtiens des points à télécharger
Obtiens des points à télécharger

Gagnz des points en aidant d'autres étudiants ou achete-les avec un plan Premium


Guides et conseils
Guides et conseils


Exercices sur l'algorithmique et la programmation - 3, Exercices de Application informatique

Exercices d’informatique sur l'algorithmique et la programmation - 3. Les principaux thèmes abordés sont les suivants: exercices.

Typologie: Exercices

2013/2014

Téléchargé le 03/03/2014

Christophe
Christophe 🇫🇷

4.1

(104)

760 documents

1 / 2

Toggle sidebar

Cette page n'est pas visible dans l'aperçu

Ne manques pas les parties importantes!

bg1
ENSEIRB 2009-2010 - epartement informatique - Premi`ere ann´ee
PG116 - Atelier algorithmique et programmation
Examen (session2) - dur´ee 1h20
Documents de cours/td autoris´es
Les trois exercices se basent sur la structure lelement donn´ee en annexe A (et vue en TD2)
qui efinit une cellule d’une liste chaˆın´ee.
Exercice 1 (4 points)
Nous consid´erons connue une fonction de prototype int equals(void ,void )qui indique si
les deux pointeurs esignent des valeurs identiques 1.
´
Ecrire une fonction de prototype int llm find (struct lelement l , void v) qui indique si la
structure chaˆın´ee lcontient la valeur point´ee par v.
Exercice 2 (10 points)
Une table de hachage peut repr´esenter efficacement des ensembles munis des op´erations
d’ajout et de recherche. Elle fonctionne selon le principe suivant :
On attribue `a chaque valeur une cl´e qui sert d’index pour stocker la valeur dans un
tableau. Ci-dessous, ”Tom Katz” a la cl´e 6 et ”Tony Balognie” a la cl´e 9.
Deux valeurs distinctes peuvent avoir la eme cl´e, comme ”Sarah Jones” et ”John
Smith” ci-dessous qui partagent la cl´e 8. On parle alors de collision. Chaque case du
tableau stocke donc la liste chaˆın´ee des valeurs de mˆeme cl´e.
Nous consid´erons le fichier en-tˆete en annexe B. Nous supposons connues la fonction hash
qui fournit la cl´e associ´ee `a une valeur, et la fonction equals qui indique si deux valeurs sont
´egales 1. Par convention, hash retourne une valeur comprise entre 0 et n1.
1. efinir la structure hashtable qui met en œuvre la table de hachage par un tableau de
listes chaˆın´ees (utiliser la structure lelement en annexe A pour cela).
2. Donner le code des fonctions suivantes :
(a) hashtable init qui fournit une table de hachage vide dont le tableau a la capacit´e n.
1. Selon la convention usuelle : 0 pour faux et toute autre valeur pour vrai.
1
pf2

Aperçu partiel du texte

Télécharge Exercices sur l'algorithmique et la programmation - 3 et plus Exercices au format PDF de Application informatique sur Docsity uniquement!

ENSEIRB 2009-2010 - D´epartement informatique - Premi`ere ann´ee

PG116 - Atelier algorithmique et programmation

Examen (session2) - dur´ee 1h

Documents de cours/td autoris´es

Les trois exercices se basent sur la structure lelement donn´ee en annexe A (et vue en TD2)

qui d´efinit une cellule d’une liste chaˆın´ee.

Exercice 1 (4 points)

Nous consid´erons connue une fonction de prototype int equals(void ∗, void ∗) qui indique si

les deux pointeurs d´esignent des valeurs identiques 1.

Ecrire une fonction de prototype´ int llm find (struct lelement ∗ l , void ∗ v) qui indique si la

structure chaˆın´ee l contient la valeur point´ee par v.

Exercice 2 (10 points)

Une table de hachage peut repr´esenter efficacement des ensembles munis des op´erations

d’ajout et de recherche. Elle fonctionne selon le principe suivant :

  • On attribue `a chaque valeur une cl´e qui sert d’index pour stocker la valeur dans un

tableau. Ci-dessous, ”Tom Katz” a la cl´e 6 et ”Tony Balognie” a la cl´e 9.

  • Deux valeurs distinctes peuvent avoir la mˆeme cl´e, comme ”Sarah Jones” et ”John

Smith” ci-dessous qui partagent la cl´e 8. On parle alors de collision. Chaque case du

tableau stocke donc la liste chaˆın´ee des valeurs de mˆeme cl´e.

Nous consid´erons le fichier en-tˆete en annexe B. Nous supposons connues la fonction hash

qui fournit la cl´e associ´ee `a une valeur, et la fonction equals qui indique si deux valeurs sont

´egales 1. Par convention, hash retourne une valeur comprise entre 0 et n− 1.

1. D´efinir la structure hashtable qui met en œuvre la table de hachage par un tableau de

listes chaˆın´ees (utiliser la structure lelement en annexe A pour cela).

2. Donner le code des fonctions suivantes :

(a) hashtable init qui fournit une table de hachage vide dont le tableau a la capacit´e n.

  1. Selon la convention usuelle : 0 pour faux et toute autre valeur pour vrai.

(b) hashtable find qui indique si une valeur est stock´ee dans la table de hachage 1. On

utilisera la fonction llm find de l’exercice 1 pour la recherche dans une liste chaˆın´ee.

(c) hashtable insert qui ajoute une valeur `a la table de hachage. On rappelle que la table

repr´esente un ensemble.

(d) hashtable free qui lib`ere la m´emoire occup´ee par la table de hachage.

Exercice 3 (6 points)

Nous souhaitons param´etrer les types de donn´ees lelement et hashtable des deux exercices

pr´ec´edents pour qu’ils utilisent des fonctions hash et equals non plus fix´ees, mais adapt´ees aux

valeurs stock´ees.

1. D´eclarer une variable qui pointe vers la fonction equals et initialiser cette variable.

2. La fonction llm find doit ˆetre param´etr´ee en lui passant un pointeur sur une fonction

equals. Modifier son prototype et son code en cons´equence.

3. La table de hachage doit ˆetre param´etr´ee par des pointeurs sur des fonctions hash et

equals. Modifier le code en cons´equence tout en garantissant que pour une table de

hachage donn´ee, toutes les op´erations utilisent les mˆemes fonctions hash et equals.

A lelement.h

#i f n d e f LELEMENT H #define LELEMENT H struct l e l e m e n t { void ∗ data ; struct l e l e m e n t ∗ next ; } ; struct l e l e m e n t ∗ l l m i n i t e m p t y ( void ) ; struct l e l e m e n t ∗ l l m a d d h e a d ( struct l e l e m e n t ∗ , struct l e l e m e n t ∗ ) ; int l l m i s e m p t y ( struct l e l e m e n t ∗ ) ; #endif /∗ LELEMENT H ∗/

B hashtable.h

#i f n d e f HASHTABLE H #define HASHTABLE H struct h a s h t a b l e ; extern unsigned int hash ( void ∗ , unsigned int n ) ; extern int e q u a l s ( void ∗ , void ∗ ) ; struct h a s h t a b l e ∗ h a s h t a b l e i n i t ( unsigned int n ) ; int h a s h t a b l e f i n d ( struct h a s h t a b l e ∗ , void ∗ ) ; void h a s h t a b l e i n s e r t ( struct h a s h t a b l e ∗ , void ∗ ) ; void h a s h t a b l e f r e e ( struct h a s h t a b l e ∗ ) ; #endif /∗ HASHTABLE H ∗/