PDA

Voir la version complète : Programmation un coup de main



Yo-gourt
22/06/2007, 17h22
Pouvez-vous m'aider à résoudre ce problème? Merci à tous les gros cerveaux du forum :)

Dans une liste chainé, écrivez une méthode qui permet de déplacer le plus grand élément en dernière position.
classe de la liste chainé : class CircularList {

/** Creates a new instance of CircularList */
static class Node
{
int val;
Node next;
Node (int v) { val =v; }
}
Node next (Node x) //retourne le node suivant
{ return x.next; }
int val(Node x) //retourne la valeur du node

{ return x.val; }
Node insert (Node x, int v) //insere un node ayant la valeur v, apres le node x, retourne le node inséré
{
Node t = new Node(v);
if (x==null) t.next =t ;
else { t.next = x.next; x.next =t ;}
return t ;
}

static Node remove (Node x)//retire le node suivant
{ x.next = x
.next.next; return x;}
}

Flaggados
22/06/2007, 18h51
c'est quoi la classe Node ?

[c'est en quel langage ? je connais que le Java... enfin ça va encore, là ça semble pas trop éloigné, mais la déclaration des méthodes me perturbe un peu...]

ducon
22/06/2007, 19h22
Ben, c’est du C.

Tramb
23/06/2007, 04h06
Bon t'as trouvé ou pas?
L'idée générale du net c'est pas de filer les soluces aux exos.
Réfléchis juste à ces deux points:
1) En itérant une seule fois sur la liste, comment trouver le plus grand élément
2) Comment placer un élément arbitraie de la liste en dernière position

Au boulot!

(Et non, c'est pas du C, ducon :) )

DakuTenshi
23/06/2007, 04h09
c'est en quel langage ?

Du roumain à priori

ducon
23/06/2007, 07h44
(Et non, c'est pas du C, ducon :) )

Du C++, alors.

Yo-gourt
23/06/2007, 10h49
En fait c'est pour un pote qui en peux plus, je lui ai dit t"'inquiètes je suis, le grand gourou du C++. Non c'etait pour avoir des pistes. merci

Mars2
23/06/2007, 12h54
Le c++ c'est le mal.
Je pense que tu dois comparer toutes les valeurs et decale la plus grande pour la mettre a la fin...
Essaye de voir dans les algo de tri

Tramb
23/06/2007, 18h09
Du C++, alors.

Non plus, y'a des constructions interdites comme déclarer une instance de Node dans Node.
Ou "static class" ça n'a aucun sens. Ou "null" en minuscules.
C'ets plutôt du Java non?

rw3
23/06/2007, 18h15
[c'est en quel langage ? je connais que le Java... enfin ça va encore, là ça semble pas trop éloigné, mais la déclaration des méthodes me perturbe un peu...]

B)

Eld
23/06/2007, 18h58
c'est du java
quoi que une classe statique j'ai jamais fait encore

Flaggados
23/06/2007, 19h43
du java ça ? nooooooooon ! il manque tout plein de trucs devant les noms de méthodes dans leur déclaration (le statut privé, protégé ou public...).

En java, le constructeur a le même nom que la classe et ne peut pas avoir un statut "static" et surtout ne peut pas être déclaré avec un "class" devant, ça n'a aucun sens...

en java, on déclarerait une classe CircularList comme ceci :

public class CircularList
{

public CircularList()
{
//blablabla du constructeur
}

public [type] nomDeLaMethode()
{
//blabla d'une méthode
}

}

Serra
23/06/2007, 19h56
Tiens, j'vais vous filer un truc super :

developpez.com (http://www.developpez.com)

De rien, ça me fait plaisir :ninja:

Richard Mammouth
23/06/2007, 23h05
du java ça ? nooooooooon ! il manque tout plein de trucs devant les noms de méthodes dans leur déclaration (le statut privé, protégé ou public...).
Mais siiiiii c'est du Java... Pas de modificateur d'accès, c'est l'accès "par défaut", c'est à dire uniquement depuis le même package.


En java, le constructeur a le même nom que la classe et ne peut pas avoir un statut "static" et surtout ne peut pas être déclaré avec un "class" devant, ça n'a aucun sens...
C'est pas un constructeur, c'est une classe interne qui sert juste à contenir les éléments de la liste et un pointeur vers l'élément suivant.

Sinon le gros truc qui manque dans cette classe CircularList, c'est une référence au premier Node... Si ton pote a du mal à comprendre, rien de tel qu'un petit dessin comme ceux-ci. (http://en.wikipedia.org/wiki/Linked_list#Variants)

Flaggados
24/06/2007, 00h19
C'est pas un constructeur, c'est une classe interne qui sert juste à contenir les éléments de la liste et un pointeur vers l'élément suivant.

Aaaaaaah... Je me suis laissé tromper par le commentaire "/** Creates a new instance of CircularList */" qui signifiait pour moi que ce qui allait suivre était un constructeur...

Richard Mammouth
24/06/2007, 00h46
On m'aurait donc menti ? Je ne suis qu'en première année, et mon prof d'info nous a certifié qu'il fallait mettre ces petits "private" et cie devant tous les noms de méthode... :wacko:
Essaie de compiler la classe en question, tu verras que ca passe. Le compilateur a toujours raison, contrairement aux profs. :rolleyes:

Aghora
24/06/2007, 00h50
Oui, les "private" c'est pour grosso modo éviter que les classes soient affectées par d'autres. C'est plus sûr pour le programme d'en mettre oui mais franchement pas obligatoire.

GloP
24/06/2007, 00h52
C'est obligatoire si tu veux rendre ton champ privé, ce qui est le meilleur design dans la majoritee des cas... ca veut rien dire ce genre de phrases...

Aghora
24/06/2007, 00h54
Si tu le dis...