| Qui est en ligne ? |
| Il y a : 19 utilisateurs en ligne, consultez le détail |
Forum » Serveur, Réseaux et Programmation » Ajouter une cellule en fin de liste en Java |
Forum modéré par : jblecanard |
| Même auteur |
|
Score ( voter ) : |
|
| Page : [1] |
| Auteur | Message |
|---|---|
|
|
#0 Message posté le : 28-06-2007 à 11:12:58 |
Scarabée Forum : Inscrit Association : Arrivé(e) le : 13-07-2005 Nombre de messages : 206 |
bon je refais un post et j'ai marqué l'autre comme résolu . En fait je suis perdu ... Je n'arrive pas à ajouter une cellule en fin de liste ! Je vous file le code, vous pourrez l'essayer et me dire pourquoi tous les entiers entrés ne sont pas insérés dans la liste ! import java.io.*;
class Cellule{
int valeur;
Cellule suivant;
Cellule(int v)
{
valeur = v;
suivant = null;
}
}
class Liste{
Cellule tete;
Liste()
{
tete = null;
}
// Affiche la liste
public void Afficher()
{
if(estVide())
{
System.out.println("NULL/");
}
else
{
for (int i=0; i<Longueur(); i++)
{
System.out.print(tete.valeur + " -----> ");
tete = tete.suivant;
}
}
}
// Calcule et retourne la taille de la liste
public int Longueur()
{
Cellule c = tete;
int taille = 0;
while(c != null){
taille ++;
c = c.suivant;
}
return taille;
}
public boolean estVide()
{
if(tete == null)
return true;
else
return false;
}
public void ajouterFin (int x)
{
if (tete == null){
tete = new Cellule(x);
}
else
{
ajouterCellule(tete, x);
}
}
public void ajouterCellule(Cellule c, int a)
{
if(c.suivant == null)
{
c.suivant = new Cellule(a);
}
else
{
ajouterCellule(c.suivant, a);
}
}
}
class Test{
public static void main (String [] args) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Liste liste = new Liste();
int a=0;
int b=0;
System.out.println("Combien d'entiers voulez-vous inserer ?");
a = Integer.parseInt(br.readLine());
for (int i=0; i<a; i++)
{
System.out.println("Entrez l'entier");
b = Terminal.lireInt();
liste.ajouterFin(b);
}
System.out.println("");
System.out.println("Voici la liste :");
liste.Afficher();
System.out.println("");
}
} |
|
|
#1 Message posté le : 28-06-2007 à 12:09:44 |
Naboo Forum : Modérateur Association : Président Arrivé(e) le : 09-04-2006 Nombre de messages : 2032 |
Ce que je peux te conseiller, c'est d'utiliser une version de liste récursive : pas d'objet cellule mais que des listes. En fait, une liste est une tete plus une suite qui est une autre liste. Jusqu'à ce qu'il n'y ait plus de suite. Par exemple, la liste (5,3,1) est en fait (5,(3,(1))). Cela permet de bien comprendre les mécanismes sous-jacents et ne réprente pas de réel défaut de performances (dans la mesure où tu travailles par référence). C'est une version simplifée mais efficasse des objets chaînés. Tu peux noter que cette méthode peut te permettre d'implémenter facilement des arbresx et pas d'autres sortes de SDD. Atta, je te fais un petit bout de code. --Message édité par Azollyx le 28-06-2007 à 12:13:05-- ------------------------------------- La force vaincra ! :D |
|
|
#2 Message posté le : 28-06-2007 à 12:29:17 |
Naboo Forum : Modérateur Association : Président Arrivé(e) le : 09-04-2006 Nombre de messages : 2032 |
Et voilà une petite liste de base ; c'est là. PS : j'ai utilisé la généricité. Cela permet de choisir et forcé le type que contiendra la liste (dans le main, j'ai choisi que E était un String). Si ça t'embrouille, enlève tout de ce qui est dans des chevrons et remplace E par Object. Mais comme le code n'est pas très long, tu devrais t'en sortir. En fait, tout en haut j'ai écrit "Liste<E>" ce qui fait que "E" est maintenant un type. Et ce type est à choisir lors de la création de l'object (Liste... = new Liste<String>() : je choisi un String comme type). D'autre part, une méthode body() ou getBody() retournant une Liste<E> pourrait t'être bien utile : tu pars du principe que la liste a un coprs / une suite et tu te contente de tester s'il est vide. --Message édité par Azollyx le 28-06-2007 à 12:36:41-- ------------------------------------- La force vaincra ! :D |
|
|
#3 Message posté le : 28-06-2007 à 12:47:06 |
Scarabée Forum : Inscrit Association : Arrivé(e) le : 13-07-2005 Nombre de messages : 206 |
ok merci beaucoup ! je vais décortiquer ton code ! |
|
|
#4 Message posté le : 28-06-2007 à 20:30:29 |
Naboo Forum : Modérateur Association : Président Arrivé(e) le : 09-04-2006 Nombre de messages : 2032 |
Alors ? ------------------------------------- La force vaincra ! :D |
|
|
#5 Message posté le : 28-06-2007 à 21:40:06 |
Jedi Forum : Modérateur Association : Membre fondateur Arrivé(e) le : 08-01-2005 Nombre de messages : 4017 |
La généricité c'est super mais ça ne compile qu'à partir des sources 1.5. Attention donc, sur certaines machines pro, on n'en dispose pas... ------------------------------------- C'est une situation bien inconfortable que d'être assez sensible à la bêtise pour en souffrir et trop intelligent pour s'en indigner. - Gustave Thibon - |
|
|
#6 Message posté le : 28-06-2007 à 22:03:40 |
Naboo Forum : Modérateur Association : Président Arrivé(e) le : 09-04-2006 Nombre de messages : 2032 |
Sérieux ? Quel genre de machines ? Il suffit de mettre à jour le JDK, non ? ------------------------------------- La force vaincra ! :D |
|
|
#7 Message posté le : 28-06-2007 à 22:21:12 |
Jedi Forum : Modérateur Association : Membre fondateur Arrivé(e) le : 08-01-2005 Nombre de messages : 4017 |
Bah sur les machines Sun de mon école, on n'en dispose pas par exemple. Et mettre à jour le JDK n'est pas une si mince affaire : il s'agit d'un parc informatique complet, utilisé par moults élèves et professeurs. ------------------------------------- C'est une situation bien inconfortable que d'être assez sensible à la bêtise pour en souffrir et trop intelligent pour s'en indigner. - Gustave Thibon - |
| Page : [1] |
Forum » Serveur, Réseaux et Programmation » Ajouter une cellule en fin de liste en Java |
Forum modéré par : jblecanard |
| Même auteur |
|
Score ( voter ) : |
|
- Petit scarabée : 0 pastille, moins de 100 messages
- Scarabée : 0 pastille, plus de 100 messages
- Hobbit : 1 pastille, plus de 1000 messages
- Naboo : 2 pastilles, plus de 2000 messages
- Elfe : 3 pastilles, plus de 3000 messages
- Jedi : 4 pastilles, plus de 4000 messages
- Maître Jedi : 5 pastilles, plus de 5000 messages