 |
|
 |
|
| |
S'enregistrer
Rechercher FAQ
Connexion
| Message |
Auteur |
Posté le: 05 04 2004 10:54 Sujet du message: Listes chainées en JAVA |
|
|
Bonjour à tous,
Voila, j'ai un TP sur les listes chainées, mais j'ai un blocage, je parviens pas à les manipuler comme je le voudrais...
On doit ajouter des noms avec prénoms dans une listes, on doit les mettre en tete, en queue, les retirer, afficher tel case avec comme param, soit le nom ET prenom, soit la Nieme personne, ainsi entre autre d'un compareTo qui doit permettre de trier toutes les cases selon le nom de famille, puis le prénom.....
Je vous mets deja le code que j'ai....je cherche surtout un site qui m'aiderait, sinon si vous savez m'aider.....c'est encore mieux !
| Code: | public class ListeChainee {
public Personne pers;
public ListeChainee suivant;
public ListeChainee() {
this.pers=null;
this.suivant=null;
}
public ListeChainee(Personne pers, ListeChainee suivant) {
setPers(pers);
setSuivant(suivant);
}
public void setPers(Personne pers) {
this.pers=pers;
}
public void setSuivant(ListeChainee suivant){
this.suivant=suivant;
}
public Personne getPers() {
return this.pers;
}
public ListeChainee getSuivant() {
return this.suivant;
}
public void ajouterTete(Personne pers) {
this.setSuivant(new ListeChainee(pers, this.getSuivant()));
}
public void oterTete()throws ListeException{
if(this.estVide())throw new ListeException("La liste est vide!");
this.setSuivant(this.getSuivant().getSuivant());
}
public void ajoutQueue(Personne pers){
if(this.estVide()){
this.setSuivant(new ListeChainee(pers,this.getSuivant()));
}
ListeChainee baladeur=this;
ListeChainee nouvelle=new ListeChainee();
while(baladeur.getSuivant()!=null){
nouvelle.ajouterTete(baladeur.getPers());
baladeur=baladeur.getSuivant();
}
ListeChainee liste1 = new ListeChainee(pers,this.getSuivant());
baladeur.setSuivant(liste1);
}
public void oterQueue() throws ListeException{
int compteur=0;
if(this.estVide()) throw new ListeException ("Liste vide!");
ListeChainee baladeur = this.getSuivant();
if(baladeur!=null){
compteur++;
baladeur=this.getSuivant();
}
System.out.println("nombre d'éléments :"+compteur);
}
public void supprimerParNomPrenom()throws ListeException{
ListeChainee baladeur=this.getSuivant();
while(baladeur!=null){
if(this.getPers()==baladeur.getPers()){
baladeur.setSuivant(this.getSuivant());
}
else{
throw new ListeException ("Personne indisponible ds la liste");
}
}
}
public boolean estVide(){
return this.getSuivant()==null;
}
public String toString() {
if(this.estVide()) return "";
ListeChainee baladeur=this.getSuivant();
String resultat="( ";
while(baladeur!=null) {
resultat+=baladeur.getPers();
baladeur=baladeur.getSuivant();
}
return resultat+" )";
}
public String premierePersonne(){
if(this.estVide()) return "";
return "("+this.getSuivant().getPers()+")";
}
public String deuxiemePersonne(){
if(this.estVide()|| this.getSuivant().estVide()) return "";
return "("+this.getSuivant().getSuivant().getPers()+")";
}
public String niemePersonne(int nieme) {
int compteur=1;
if(this.estVide()) return "";
ListeChainee baladeur=this.getSuivant();
while(baladeur==null&&compteur!=nieme){
baladeur=baladeur.getSuivant();
}
if(compteur==nieme) return "("+baladeur.getPers()+")";
return "N-ieme trop grand";
}
} |
La methode oterQueue() et String niemePersonne() foirent.....
Doit surement y avoir des fautes....mais tout compile, et fait ce que je veux.....sauf les deux methodes citées ci dessus....
Merci de votre aide,
Greg |
|
Francky Modérateur

Inscrit le: 02 Mar 2003 Messages: 4336 Localisation: Waterloo. Waterloo. Waterloo... Morne Plaine....
|
|
Revenir en haut |
|
|
|
 |
Posté le: 09 05 2004 19:02 Sujet du message: |
|
|
Voila j'a codé un truc vite fait si tu veux plus d'indication hésite pas...
Personne.java
| Code: |
public class Personne {
private String nom;
private String prenom;
public Personne(String p, String n){
nom = n;
prenom = p;
}
public String getNom(){
return this.nom;
}
public String getPrenom(){
return this.prenom;
}
}
|
Chainon.java
| Code: |
public class Chainon{
private Chainon suivant;
private Personne pers;
public Chainon(Personne p){
pers = p;
suivant = null;
}
public Personne getPersonne(){
return pers;
}
public Chainon getSuivant(){
return suivant;
}
public void setSuivant(Chainon c){
this.suivant = c;
}
}
|
ListeChainee.java
| Code: |
public class ListeChainee{
private Chainon premier;// Cet élément permet d'accéder a la liste
// mais aucune information n'est sotckée dasn celui-ci
//Constructeur
public ListeChainee(){
premier = new Chainon(null);
premier.setSuivant(null);
}
public void ajouterEnQueue(Chainon c){
Chainon parcours;
parcours=premier;
while(parcours.getSuivant() != null){
parcours = parcours.getSuivant();
}
parcours.setSuivant(c);
}
public void ajouterEnTete(Chainon c){
c.setSuivant(premier.getSuivant());
premier.setSuivant(c);
}
public int size(){
int i=0;
Chainon p = premier;
while(p.getSuivant() != null){
i++;
p=p.getSuivant();
}
return i;
}
public Chainon getChainonAt(int i){
if(i>this.size()){
System.out.println("Erreur indice en dehors de limites\n");
return null;
}
else{
int j = 0;
Chainon p = premier;
while(j<i){
j++;
p=p.getSuivant();
}
return p;
}
}
public void supprimerAt(int i){
int j = 0;
Chainon p = premier;
Chainon p2 = null;
while(j<i){
j++;
p2 = p;
p = p.getSuivant();
}
//Supression
p2.setSuivant(p.getSuivant());
}
public void supprimerQueue(){
supprimerAt(this.size());
}
public String toString(){
Chainon p=premier;
int i = 0;
String stmp = "";
while(p.getSuivant() != null){
i++;
p = p.getSuivant();
stmp +=""+i+".\nNom : ";
stmp += p.getPersonne().getNom();
stmp += "\nPrenom : ";
stmp += p.getPersonne().getPrenom();
stmp += "\n";
}
return stmp;
}
}
|
Application.java
| Code: |
public class Application{
public static void main(String argv[]){
ListeChainee lc = new ListeChainee();
lc.ajouterEnTete(new Chainon(new Personne("Albert", "Einstein")));
lc.ajouterEnTete(new Chainon(new Personne("Alexandre", "Volta")));
lc.ajouterEnTete(new Chainon(new Personne("Thomas", "Young")));
lc.ajouterEnQueue(new Chainon(new Personne("Isaac", "Newton")));
lc.ajouterEnQueue(new Chainon(new Personne("Erwin", "Schrodinger")));
lc.ajouterEnQueue(new Chainon(new Personne("Niels", "Bohr")));
System.out.println(lc.toString());
lc.supprimerAt(3);
System.out.println(lc.toString());
}
}
|
Voila ce n'est pas la code le plus él"gant que j'ai jamais écrit mais ça marche
Pour ton tri faut que je regarde mais d'apprès mes souvenir il faut que ta classe Personne implémente Comparable (faut ensuite surcharger 3 méthode et ça roule tou seul )
Voila en espérant que ça t'aide... |
|
Igor Abalam Posteur habitué

Inscrit le: 08 Mai 2004 Messages: 122
|
|
Revenir en haut |
 |
Posté le: 18 05 2004 12:14 Sujet du message: |
|
|
Merci beaucoup !!! Meme si entre temps j'ai arrete mes etudes, car ca me branchait pas trop.... merci quand meme !!!!
Francky |
|
Francky Modérateur

Inscrit le: 02 Mar 2003 Messages: 4336 Localisation: Waterloo. Waterloo. Waterloo... Morne Plaine....
|
|
Revenir en haut |
 |
Posté le: 04 01 2007 14:02 Sujet du message: Liste chainées |
|
|
Bonjour,
j'ai du mal a comprendre le fonctionnement des listes chainées, en fait, pour mon projet, il me faut créer une liste de voitures, pour pouvoir récupérer les attributs de voiture suivante et voiture précédante et je ne sais pas comment m'y prendre, pouvez vous maider svp |
|
atomic007 Nouveau posteur

Inscrit le: 04 Jan 2007 Messages: 1
|
|
Revenir en haut |
 |
|
 |
|
Toutes les heures sont au format GMT
|
| Page 1 sur 1 |
|
|
| |
|
|
|