• Aucun résultat trouvé

TP3 - Allocation de mémoire Exercice 1:

N/A
N/A
Protected

Academic year: 2022

Partager "TP3 - Allocation de mémoire Exercice 1:"

Copied!
1
0
0

Texte intégral

(1)

TP3 - Allocation de mémoire

Exercice 1:

Supposons la structure déclarée comme suit :

struct liste{

int val;

struct liste *ptr;

}

1. Écrire une fonction qui prend en paramètre un pointeur vers unestruct liste, considéré comme la tête d’une liste chaînée d’entiers, et affiche tous les éléments de la liste.

2. Écrire une fonction qui prend en paramètre le même type de pointeur, plus un entiern, crée un nouveau noeud avecval = net insère le nouveau noeud à la 5e position dans la liste (donc entre le 4e noeud et le 5e).

3. Écrire une fonction qui prend en paramètre le même type de pointeur, plus deux entiers (appelons-les netpos), et insère l’entiernentre le(pos-1)-ième et lepos-ième noeud de la liste.

4. Écrire un programme qui lit une suite d’entiers saisie au clavier et crée une liste chaînée (dans l’ordre de saisie), puis lit encode deux entiersnetposet insèrenà la positionposen appelant la fonction écrite au point précédent.

5. Écrire une fonction qui prend en paramètre le même type pointeur plus un entiernet supprime l’entier qui se situe à la positionndans la liste chaînée. Attention ! Cette fonction devrait fonctionner correc- tement même sinest plus grand que le nombre de noeuds dans la liste ! (et donc ne rien faire dans ce cas-là !)

Pour la construction de la liste chaînée pendant la lecture de la suite d’entiers au clavier, reprendre le code vu en cours pour la construction d’une liste chaînée dans ordre de saisie.

Exercice 2:

1. Déclarez un pointeur d’entiers. Puis allouez-lui de la mémoire avecmalloc, et affichez son adresse.

Désallouez-le, et réallouez-le immédiatement. Est-ce qu’il est alloué à la même adresse ?

2. Refaites le point précédent, mais cette fois-ci en allouant plusieurs pointeurs de tailles différentes, puis en les désallouant et réallouant à nouveau. Que constate-t-on ?

3. Déterminez la taille de la zone de gestion qui se trouve à la fin de chaque cellule réservée par un appelmalloc. Pour cela, appeler deux fois de suitemallocet afficher la différence entre les deux pointeurs retournés, cela en passant différentes tailles de données en paramètre àmalloc.

4. (Facultatif) Donnez l’erreur (de compilation ou exécution) qui est issue par le code suivant (lorsqu’il est correctement placé dans un main !) :

char *c;

c="abcd";

c[2]=0;

Donnez une explication pour ce comportement.

Exercice 3:

Écrire une fonction qui lit une suite de chaînes de caractères (terminée par la chaîne composée du chiffre 0), et crée une liste chaînée qui contient les chaînes de caractères dans l’ordre inverse de saisie. Pour cela, adapter le code vu en cours pour la construction d’une liste chaînée en ordre inverse de saisie.

Références

Documents relatifs

Considérant donc, les performances du site, l’implication de son personnel technique et scientifique, l’évolution des stratégies de traitement des données du LHC et

Afin de permettre des modifications de l’état d’un routeur dans les réseaux utilisant des protocoles de routage à état des liens, nous avons conçu un algorithme efficace,

Modifier ce main pour que l’utilisateur puisse donner les dimensions de la fenêtre en ligne de com- mande.. Ajouter une méthode qui dessine un segment de droite horizontal (trouver

Faire une figure montrant le positionnement des points A, B, C, D, E. 3) Représenter sur un cercle trigonométrique les différentes familles de solutions.. Retrouvez ces valeurs à

Epreuve Classe Examinateur Sujet n° Coef.. 1pt 9) En utilisant la fonction ci-dessus, écrire un algorithme qui demande 10 nombres à l’utilisateur en les stockant dans un

“Past-pointing” = laisser du mou sur le brin libre (loop), passer le pousse- noeud au-delà du noeud et serrer le noeud..

Chaque personne écrit sa propre suite de nombres réels selon la règle suivante: pour commencer, elle choisit un nombre réel > 0 comme premier terme de sa suite qu'elle

Utilisation de la fonction : Écrire un programme qui, après avoir saisi les coefficients d’une matrice A, donnera le nombre de zéros présents dans la matrice.. Le TD 7, dans lequel