[PDF] Algorithmes et structures de données : TD 8 Corrigé - Tableaux





Previous PDF Next PDF



Algorithmique et Structures de Données

Il constitue un manuel de cours et d'exercices sur une partie du domaine de programmation. Les lecteurs ne nécessitent aucun pré requis sur les l'algorithmique.



Algorithmes et structures de données génériques

ALGORITHMES. ET STRUCTURES DE. DONNÉES GÉNÉRIQUES. Cours et exercices corrigés en langage C. Michel Divay. Professeur à l'université Rennes 1. 2e édition.



Exercices des chapitres 9 10 et 11 Sommaire

Structure de données et Algorithmique. Exercices ch. 9 10 et 11. Page 4/20 Corrigés. Algorithmique. Exercices ch. 9



Algorithmique et structures de données en langage C 2ème année

Dans le cadre de cette étude nous souhaitons disposer d'une structure de 1 On considère pour cet exercice que la liste est SIMPLEMENT chaînée.



Langage C : énoncé et corrigé des exercices IUP GéniE

Le s exercice s qu i su i v e nt sont c o rri gés . Exercice 29 Soit un fi chier de données structuré en une suite de l ignes contenant chacune un no m de 



Exercices avec Solutions

Les Structures de Contrôle (Conditionnelles – Itératives). Exercices Corrigés d'Algorithmique – 1ére Année MI 5. EXERCICE 1. Ecrire un algorithme qui 



Algorithmes et structures de données : TD 5 Corrigé

Algorithmes et structures de données : TD 5 Corrigé. Temps d'un algorithme T(n) - Notation Grand-O. Exercice 5.1 Temps d'un algorithme T(n).



Algorithmes et structures de données : TD 8 Corrigé - Tableaux

Quelle est la complexité de votre algorithme ? Comparer avec l'exercice précédente sur les tableaux dynamiques. La complexité de cet algorithme est O(1) comparé 



Algorithmes et structures de données : TD 1 Corrigé - Arbres binaires

Dessiner des arbres binaires de recherche de cet ensemble de clés avec une hauteur de 3 puis 5



Correction TD 05 :Structures de données indexées

Correction TD 05 :Structures de données indexées. Licence 1 MASS semestre 2 2007/2008. Exercice 1 : Déclarations

Universit´e Bordeaux 2 Licence MASS/Scico 5`eme semestre (2006/2007) Algorithmes et structures de donn´ees : TD 8 Corrig´e Tableaux dynamiques - Listes lin´eaires simplement chaˆın´ees - Complexit´e asymptotique

Rappel :

SetLength(tableau, n)est de complexit´e O(n)

SetLength(tableau, 1)est de complexit´e O(1)

New(element)est de complexit´e O(1) quandelementest d"un type de taille fixe Exercice 8.1Listes lin´eaire simplement chaˆın´ee Consid´erer l"algorithme suivant qui cr´ee une liste den´el´ements : {Algorithme 2} type p_t_liste_simple = ^t_liste_simple; t_liste_simple = record cle : integer; suivant : p_t_liste_simple; end; var element : p_t_liste_simple; var temp : p_t_liste_simple; var premier : p_t_liste_simple; var i : integer; d´ebut

New(element);

element^.suivant := NIL; element^.cle := 0; premier := element; temp := element; pour i de 1 `a n-1 faire d´ebut

New(element);

element^.cle := i*i; element^.suivant := NIL; temp^.suivant := element; temp := element; fin fin

1. Quelle est la complexit´e de cet algorithme (notation Grand-O) ?

La complexit´e de cet algorithme est O(n).

2. Ebaucher l"occupation de la m´emoire d"une mani`ere compacte.

3. Ecrire un algorithme qui parcours la liste et affiche laclede chaque ´el´ement `a l"´ecran.

Qu"est-ce qui est affich´e `a l"´ecran ?

temp := premier; while (NOT (temp = NIL)) do begin

WriteLn(temp^.cle);

temp := temp^.suivant; end;

Il est affich´e :

0 1 4

4. Ecrire un algorithme qui rajoute un ´el´ement suppl´ementaire avec la valeur 1000au d´ebut

de la liste (la liste aura n+1 ´el´ements). Quelle est la complexit´e de votre algorithme ? Comparer avec l"exercice pr´ec´edente sur les tableaux dynamiques. La complexit´e de cet algorithme est O(1) compar´e `a O(n) pour les tableaux dynamiques.

New(element);

element^.cle :=1000; element^.suivant := premier; premier := element;

5. Ecrire un algorithme qui rajoute un ´el´ement suppl´ementaire avec la valeur 1000`a la finde

la liste. Quelle est la complexit´e de votre algorithme ? Comparer avec l"exercice pr´ec´edente

sur les tableaux dynamiques. 2 temp := premier;si temp = NIL alors

New(premier);

premier^.cle := 1000; premier^.suivant := NIL; sinon tant que (NOT (temp^.suivant = NIL)) faire temp := temp^.suivant; fin tant que

New(element);

element^.cle := 1000; temp^.suivant := element; element^.suivant := NIL; fin si La complexit´e de cet algorithme est O(n), comme pour les tableaux dy- namiques.

6. Que faut-il rajouter `a l"algorithme 2 pour r´eduire la complexit´e de rajouter un ´el´ement

suppl´ementaire avec la valeur 1000`a la finde la liste ? Ecrivez l"algorithme ! Il faut rajouter un pointeurdernierqui pointe toujours vers le dernier ´el´ement.

On r´eduit ainsi la complexit´e pour rajouter un ´el´ement `a la fin de la liste `a O(1).

var dernier : p_t_liste_simple; d´ebut { .. initialiser : }

New(element);

element^.suivant := NIL; element^.cle := 1111; temp := element; premier := element; for i:=1 to 10 do begin

New(element);

element^.cle := i*i; element^.suivant := NIL; temp^.suivant := element; temp := element; dernier := temp; { seulement rajouter ¸ca } end; fin { .. rajouter en d´ebut de liste : } 3

temp := premier;New(element);element^.cle :=1000;element^.suivant := premier;premier := element;si temp = NIL alors

dernier := premier; fin si { .. rajouter en fin de liste : } si premier = NIL alors

New(premier);

premier^.cle := 1000; premier^.suivant := NIL; dernier := premier; sinon

New(element);

element^.cle :=20002; element^.suivant := NIL; dernier^.suivant := element; fin si

7. Ecrire un algorithme qui parcours la liste et lib`ere la m´emoire occup´e par la liste en

utilisantDispose. var ancien : p_t_liste_simple; d´ebut temp := premier; while (NOT (temp = NIL)) do begin ancien := temp; temp := temp^.suivant;

Dispose(ancien);

end; fin

Exercice 8.2Pointeurs

Rappeler vous de l"exercice sur les musiciens de la derni`ere s´eance (TD 6.3), et consid´erer maintenant l"algorithme suivant : type p_t_musicien = ^t_musicien; t_musicien = record cle : integer; 4 nom : string;annee : integer;suivant : p_t_musicien; end; var guitariste : p_t_musicien; var bassiste : p_t_musicien; var chanteur : p_t_musicien; var musicien : p_t_musicien; var i : integer; begin

New(guitariste);

New(bassiste);

New(chanteur);

guitariste^.cle := 1; guitariste^.nom := "Robert"; guitariste^.annee := 1982; guitariste^.suivant := NIL; bassiste^.cle := 2; bassiste^.nom := "Sebastian"; bassiste^.annee := 1979; bassiste^.suivant := NIL; chanteur^.cle := 3; chanteur^.nom := "Rainer"; chanteur^.annee := 1984; chanteur^.suivant := NIL; guitariste^.suivant := bassiste; bassiste^.suivant := chanteur; chanteur^.suivant := guitariste; musicien := guitariste; { Endroit 1 } for i := 1 to 10 do begin write("nom ", musicien^.nom); writeln(" annee ", musicien^.annee); musicien := musicien^.suivant; end; 5 end.

1. Ebaucher l"occupation de la m´emoire `a l"endroit 1.

Un extrait de l"occupation de la m´emoire est comme suit :

2. Quelle est la diff´erence entre cet algorithme et celui de la derni`ere s´eance ?

Cette fois-ci, chaque musicien est stock´e en tant que pointeur vers un enreg- istrement, et ne plus par un enregistrement tout court.

3. Compar´e `a l"algorithme de la derni`ere s´eance (TD 6.3), lequel des deux algorithme occupe

moins de la place dans la m´emoire et est donc plus efficace en terme de m´emoire ? Regardons d"abord l"occupation de la m´emoire : dans le TD 6.3, les 4 enreg- istrements occupaient 4*16 = 64 octets. Dans ce TD, les 4 pointeurs et les trois enregistrements occupent 4*4+3*16 = 64 octets ´egalement. Par contre, l"algorithme de ce TD est beaucoup plus efficace, car `a chaque affectation de typemusicien := musicien^ .suivant, il faut uniquement affecter 6 les 4 octets du pointeur au lieu de copier toute la m´emoire de16 octets du musicien.

4. Faites tourner cet algorithme dans un tableau.

Un extrait est comme suit :i

musicienˆ .nom

Robert (avant l"entr´ee dans la boucle

1 Sebastian (apr`es l"´execution demusicien := musicien^ .suivant;) 2

Rainer

3

Robert

4

Sebastian

5

Rainer

6

Robert

7

Sebastian

8

Rainer

9

Robert

10

Sebastian

5. Qu"est-ce qui affiche cet algorithme `a l"´ecran ?

nom Robert annee 1982 nom Sebastian annee 1979 nom Rainer annee 1984 nom Robert annee 1982 nom Sebastian annee 1979 nom Rainer annee 1984 nom Robert annee 1982 nom Sebastian annee 1979 nom Rainer annee 1984 nom Robert annee 1982 7quotesdbs_dbs1.pdfusesText_1
[PDF] exercices corrigés algorithme informatique

[PDF] exercices corrigés analyse complexe l3

[PDF] exercices corrigés atomistique mpsi

[PDF] exercices corrigés audit comptable et financier

[PDF] exercices corrigés base de données pdf

[PDF] exercices corrigés bilan et cpc pdf

[PDF] exercices corrigés biostatistiques pcem1

[PDF] exercices corrigés budget des ventes

[PDF] exercices corrigés calcul littéral seconde

[PDF] exercices corrigés calculs commerciaux bac pro commerce

[PDF] exercices corrigés chimie minérale pdf

[PDF] exercices corrigés chimie terminale s pdf

[PDF] exercices corrigés ciel gestion commerciale

[PDF] exercices corrigés cinématique du point terminale s

[PDF] exercices corrigés cinématique du solide indéformable