C16. Listes linéaires chaînées - Vecteurs - Fichiers Corrigé
Exercice 1 : Gestion des polynômesOn veut écrire un ensemble de procédures permettant d'effectuer du calcul algébrique sur des polynômes à une variable. On choisit d'exprimer un polynôme sous la forme d'une liste linéaire chaînée. A chaque élément est associé un monôme.
Exemple : le polynôme 12 + 32x2 + 2x3 + x20 (I)
s'exprimera sous la forme :
a) Ecrire un algorithme dont la donnée est une chaîne de caractères constituant un polynôme (que l'on convient de terminer par le caractère '*' ) et dont le résultat est une liste linéaire chaînée représentant ce polynôme.
b) Ecrire une action composée qui calcule la valeur d'un polynôme en un point donné.
c) Ecrire une action composée qui construit le polynôme somme de deux polynômes P1 et P2 donnés.
d) Ecrire une action composée qui construit le polynôme produit de deux polynômes P1 et P2 donnés.
e) Ecrire une action composée qui construit le polynôme dérivé d'un polynôme donné.
f) Ecrire une action composée qui imprime sous la forme (I) un polynôme P se trouvant en mémoire.
g) Programmer le module a)
NB. Toutes les questions sont indépendantes. On utilisera le module Nombre(Chaine) qui convertit la chaîne de caractères Chaine en un entier.
Exercice 2 : Accès par fonction
On a défini sur les vecteurs deux types d'accès
- l'accès séquentiel
- l'accès dichotomique
On peut définir un autre type d'accès que l'on peut décrire comme suit : Soit à construire un vecteur V à partir d'une liste de N valeurs V1,V2,.. VN. On définit une fonction F qui à toute valeur Vi attribue un entier compris entre 1 et N. L'élément Vi est alors rangé à la place F(Vi). Comme on ne peut dans la pratique trouver une fonction F qui attribue une valeur différente à chaque élément de V, il se peut que l'on ait :
F(Vi) = F(Vj) = F(Vk)= . . = F(Vt)
Dans ce cas
- l'élément Vi sera rangé dans le vecteur à la position F(Vi),
- les autres Vj, Vk, .. , Vt seront rangés dans une liste linéaire chaînée de telle sorte qu'ils soient liés entre eux comme le montre la figure ci-dessous :
L'élément 10 est rangé à la place 6 car F(10) = 6
Dans l'exemple on a F(6) = F(16) = F(26) = 2; le premier élément est rangé à la place 2; 16 et 26 dans une liste linéaire chaînée; le deuxième champ de l'élément 2 du vecteur contient le pointeur de tête de cette liste. Etc..
Ecrire un algorithme permettant d'insérer un ensemble de valeurs.