• Aucun résultat trouvé

3 private Cellule suivante

N/A
N/A
Protected

Academic year: 2022

Partager "3 private Cellule suivante"

Copied!
1
0
0

Texte intégral

(1)

INITIATIONÀ LA PROGRAMMATION(IP2) TD5 : Listes simplement chaînées

université PAR

IS . DIDEROT

PARIS 7

L'objectif est de manipuler une liste d'entiers de manière récursive. Considérons pour cela les deux classes suivantes. Les attributs étant privés, il faudra penser à implémenter des accesseurs.

1 class Cellule {

private int valeur ;

3 private Cellule suivante ; /* A COMPLETER ... */

5 }

class ListeDEntiers {

7 private Cellule premier ; /* A COMPLETER ... */

9 }

1. Nous allons tout d'abord ajouter des constructeurs à ces classes.

(a) Écrire un constructeur pour la classe Celluleprenant un argument entier.

(b) Écrire deux constructeurs pour la classeListeDEntiers : l'un construit la liste vide,

l'autre construit la liste à partir d'un tableau d'entiers passé en argument.

2. Nous allons dénir des méthodes récursives pour manipuler les listes. Pour chaque méthode, il faut indiquer la classe dans laquelle elle est implémentée. Nous avons déjà vu une manière de simplier la manipulation des listes en déléguant le travail principal à la classe Cellule; il est fortement conseillé de procéder de la même manière ici.

(a) Écrire une méthode description qui renvoie une chaîne de caractères décrivant la liste d'entiers séparés par des espaces.

(b) Écrire une méthodeajouter_en_iqui prend deux arguments entiersietvet ajouteven positioni si elle existe, sinon l'ajoute en n.

(c) Écrire une méthode récursive supprimer_en_iqui supprime lei-ème élément de la liste.

Facultatif : Écrire ensuite une méthode supprimer_k_premieres_occ(int k, int v) qui supprime les kpremières occurrences d'un entierv.

(d) Écrire une méthodeegal(ListeDEntiers l) qui teste l'égalité de deux listes simplement chaînées, à savoirletthis. Deux listes sont égales si elles contiennent les mêmes valeurs dans le même ordre.

(e) Écrire une méthodetaille, sans argument, qui renvoie le nombre d'éléments de la liste.

(f) Écrire une méthodesomme, sans argument, qui renvoie la somme des éléments de la liste.

(g) Écrire une méthode moyenne, sans argument, qui renvoie la moyenne des valeurs de la liste sous la forme d'un double.

(h) (Facultatif) Écrire une méthode obtenir_sous_liste_inf_k (int k) qui, pour la liste this, renvoie sa sous-liste ne contenant que les entiers strictement inférieurs à k. Pour cela, on choisit ici de créer une nouvelle liste qui contient les valeurs concernées (on crée de nouvelles cellules), tandis que la liste thisn'est pas modiée.

(i) Donnez des exemples de test de vos constructeurs et méthodes dans unmain. 3. (Facultatif) Écrire les méthodes précédentes sous forme itérative.

1

Références

Documents relatifs

Ce que l'on est capable de retrouver pour son sens dans les écrits connus peut donc être réutilisé pour prélever du sens dans un écrit inconnu (démarche scientifique :

, 512, 1024 calculer l’erreur exacte pour chaque méthode et tracer sur un même graphique à double échelle logarithmique (n,

L’usage de tout document autre que le formulaire est interdit.. Une rédaction claire et concise

[r]

On les additionne après avoir affectés des coefficients multiplicateurs à chaque demi équation pour que le nombre d’électrons cédés soit égal au nombre d’électrons captés.

D’après l’égalité précédente, on peut déterminer la variation de dépense publique nécessaire pour satisfaire le plein emploi (caractérisé par une hausse de revenu de 100)

Résoudre les équations suivantes puis donner les solutions sans racine carrée au dénominateur : 1.. Il faut 30 grains de sable de la plage de Maric pour faire un volume de 3

Combien de triangles peut-on construire avec 100 points deux à deux distincts ?... C’est une somme arithmétique de