Partage
  • Partager sur Facebook
  • Partager sur Twitter

LISTE CHAINE ,PILE FILE,

DECLARATION , AJOUTER ,SUPPRIMER ,RECHERCHER LA DERNIER OCCURENCES

Sujet résolu
11 mai 2020 à 4:12:31

Bonjour, j'apprends le Java depuis plusieurs mois et je voudrais en savoir plus. 

Je voudrais savoir comment déclarer une LISTE CHAINE  , ajouter des éléments, supprimer des éléments, connaître  le nombre d'éléments, visualiser les éléments et réinitialiser la LISTE.

Réaliser une pile et une fille  à l’aide d’un tableau.
2. Réaliser une pile et  une fille  à l’aide d’une liste chainée.
3. Qu’est ce qui change fondamentalement d’après vous ?
  

Et aussi, est-ce qu'il y a des bons tutos en français ? (Sur les piles/files) Ou même en anglais à la limite.

Merci beaucoup.

  • Partager sur Facebook
  • Partager sur Twitter
11 mai 2020 à 22:18:05

L'API Java fournit déjà des implémentations de ces deux structures de données, de mémoire : LinkedList pour les listes chaînées et Queue ou Stack pour les piles. Après si c'est un exercice, si tu as bien compris le concept de la pile/file cela ne devrait pas être trop compliqué d’implémenter ça.

  • Partager sur Facebook
  • Partager sur Twitter
12 mai 2020 à 2:03:11

voici mon code java votre avis svp soyers claire svp et indulgens:D
import java.util.*;


public class class2 {

	public static void main(String[] args) {
		System.out.printf("----------------------------------------------------------------------------------------------- \n");
		System.out.printf("---           IMPLEMENTATION DES Liste chainéeS                                               ---\n");
		System.out.printf("-----------------------------------------------------------------------------------------------\n");
	Scanner	sc =new Scanner (System.in);
	//		(a) Écrire une procédure qui recherche une valeur dans une liste chainée et affiche un message
//à l’utilisateur disant si la valeur est présente ou p
			Liste node12=new Liste(0,null);//initialisation de ma liste 

 			int elem =0,i=0;
 	
			node12 =new Liste(elem,null);//
		  //  node12.settete(elem);
		 int choix;
        System.out.println("*** . Recherche d’elements dans une liste chainee ***");
        System.out.println("1.  procédure qui recherche une valeur dans une liste chainee et affiche un message\n2. Ecrire une procédure qui recherche la dernière occurence d’une valeur dans une liste chainée  \n");
        choix = sc.nextInt();
     switch (choix) {
		case 1:

	System.out.println("\nprocédure qui recherche une valeur dans une liste chainée et affiche un message  ");
	
 		System.out.print("entre l'element de tete ");
			elem = sc.nextInt();
			node12 =new Liste(elem,null);
		  //  node12.settete(elem);
	
	System.out.println("entrez le reste des elements de liste entres -1 pour arreter ");
		
	do{
		i+=1;
		System.out.print("entrez l'element "+i+" : ");
		elem=sc.nextInt();
			if (elem==-1) {
			break;
				}
	
			node12.suivant=node12.insertion(elem, node12.suivant);
	
	}while(true);

 		System.out.print("entre l'element recherche ");
			elem = sc.nextInt();
		
	estDansi(elem,node12);

		break;
		case 2:

	System.out.println("\nprocédure qui recherche une valeur dans une liste chainée et affiche un message  ");
	
 		System.out.print("entre l'element de tete ");
			elem = sc.nextInt();
			node12 =new Liste(elem,null);
		  //  node12.settete(elem);
	
	System.out.println("entrez le reste des elements de liste entres -1 pour arreter ");
		
	do{
		
		System.out.print("entrez l'element "+i+" : ");
		elem=sc.nextInt();
			if (elem==-1) {
			break;
				}
	
			node12.suivant=node12.insertion(elem, node12.suivant);
	i+=1;
	}while(true);

 		System.out.print("entre l'element recherche ");
			elem = sc.nextInt();
			findlast(elem,node12);
	
		break;
		default:
		


	}
}

	public static void findlast(int x,Liste a)  { // jai un problem au niveau de ma fonction findlast 
		int i=0,cpt =0;
		Liste node12 =new Liste(0,null);
		Liste b,link ;
			b=a;
			
		while (a!=null) {
			if (a.contenu == x) {

				node12=node12.insertion (i,node12.suivant);
				
							
					}
				
			
			a=a.suivant;
				i++;
			}
			link=node12;
			//b.affiche(b);
		while (b!=null )  {
							
			if (b.contenu == x) {
				if (link.suivant == null) {

					System.out.printf("List contains the last ocurence of the element : %d  in position %d ",x,link.contenu);
					
					//System.out.println("List contains the element "+x);
						
				}	
				else{
					
					
					link=link.suivant;		
					
				}
			
				}
					
			
			
				
			b=b.suivant;
		}
		
	}
	public static void estDansi(int x,Liste a){
		while (a!=null) {
			if (a.contenu == x) {
				//System.out.printf("List contains the element %d  in position ",x);
			
					System.out.println("List contains the element "+x);
					break;
				}

			a=a.suivant;
		}
	}
} 

 

-
Edité par LibertJoranNOUTCHEU 17 mai 2020 à 13:50:34

  • Partager sur Facebook
  • Partager sur Twitter
12 mai 2020 à 11:50:35

Si c'est un problème de vouloir le faire, alors arrête de vouloir.

Si c'est un exercice à rendre, fais-le. C'est pour que TU trouves comment faire. En faisant des essais, et des erreurs.

-
Edité par michelbillaud 12 mai 2020 à 11:51:27

  • Partager sur Facebook
  • Partager sur Twitter
15 mai 2020 à 2:15:50 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


15 mai 2020 à 8:11:11

Pour connaître le domaine, il faut que tu te colles aux exercices qu'on t'a donné à faire.

Et ne nous prends pas pour des pommes, on ne te fera pas ton exercice. On est là pour aider ceux qui ont envie d'apprendre à programmer, et coincent sur un problème. Si on veut qu'ils apprennent à résoudre des problèmes, ça serait une très mauvaise idée de les priver de la phase de tatonnement : ils seraient encore plus coincés au problème suivant.

ET ÇA SERAIT BIEN D'ARRÊTER DE CRIER.

-
Edité par michelbillaud 15 mai 2020 à 8:17:09

  • Partager sur Facebook
  • Partager sur Twitter
17 mai 2020 à 13:07:39 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


17 mai 2020 à 16:00:01

Bonjour,

Merci de colorer votre code à l'aide du bouton Code

Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Code de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: java;">Votre code ici</pre>.

Merci de modifier votre message d'origine en fonction.

Liens conseillés

En image cela donne :

  • Partager sur Facebook
  • Partager sur Twitter
17 mai 2020 à 17:32:51

avec Markdown c'est pas des "~~~" ou des "```" ?

    ~~~
    int foo() {
        float bar;
        return 33.
    }
    ~~~
int foo() {
   float bar;
  return 33.
}

-
Edité par michelbillaud 17 mai 2020 à 17:34:43

  • Partager sur Facebook
  • Partager sur Twitter
18 mai 2020 à 4:48:26

 voici mon code java votre avis S V P

J AI UN PB AU NIVEAU DE 3a fonction  FINDLAST IL y a un bug est marque par << hello //ici>> mon but etait chercher avec cette fonction la dernier occurence de  d'une valeur et sa position 

import java.util.*;


public class class2 {

	public static void main(String[] args) {
		System.out.printf("----------------------------------------------------------------------------------------------- \n");
		System.out.printf("---           IMPLEMENTATION DES Liste chainéeS                                               ---\n");
		System.out.printf("-----------------------------------------------------------------------------------------------\n");
	Scanner	sc =new Scanner (System.in);
	//		(a) Écrire une procédure qui recherche une valeur dans une liste chainée et affiche un message
//à l’utilisateur disant si la valeur est présente ou p
			Liste node12=new Liste(0,null);//initialisation de ma liste 

 			int elem =0,i=0;
 	
			node12 =new Liste(elem,null);//
		  //  node12.settete(elem);
		 int choix;
        System.out.println("*** . Recherche d’elements dans une liste chainee ***");
        System.out.println("1.  procédure qui recherche une valeur dans une liste chainee et affiche un message\n2. Ecrire une procédure qui recherche la dernière occurence d’une valeur dans une liste chainée  \n");
        choix = sc.nextInt();
     switch (choix) {
		case 1:

	System.out.println("\nprocédure qui recherche une valeur dans une liste chainée et affiche un message  ");
	
 		System.out.print("entre l'element de tete ");
			elem = sc.nextInt();
			node12 =new Liste(elem,null);
		  //  node12.settete(elem);
	
	System.out.println("entrez le reste des elements de liste entres -1 pour arreter ");
		
	do{
		i+=1;
		System.out.print("entrez l'element "+i+" : ");
		elem=sc.nextInt();
			if (elem==-1) {
			break;
				}
	
			node12.suivant=node12.insertion(elem, node12.suivant);
	
	}while(true);

 		System.out.print("entre l'element recherche ");
			elem = sc.nextInt();
		
	estDansi(elem,node12);

		break;
		case 2:

	System.out.println("\nprocédure qui recherche une valeur dans une liste chainée et affiche un message  ");
	
 		System.out.print("entre l'element de tete ");
			elem = sc.nextInt();
			node12 =new Liste(elem,null);
		  //  node12.settete(elem);
	
	System.out.println("entrez le reste des elements de liste entres -1 pour arreter ");
		
	do{
		
		System.out.print("entrez l'element "+i+" : ");
		elem=sc.nextInt();
			if (elem==-1) {
			break;
				}
	
			node12.suivant=node12.insertion(elem, node12.suivant);
	i+=1;
	}while(true);

 		System.out.print("entre l'element recherche ");
			elem = sc.nextInt();
			findlast(elem,node12); // ici << hello //ici>> 
	
		break;
		default:
		


	}
}

	public static void findlast(int x,Liste a)  {// ici se trouve mon probleme << hello //ici>> 
		int i=0,cpt =0;
		Liste node12 =new Liste(0,null);
		Liste b,link ;
			b=a;
			
		while (a!=null) {
			if (a.contenu == x) {

				node12=node12.insertion (i,node12.suivant);
				
							
					}
				
			
			a=a.suivant;
				i++;
			}
			link=node12;
			//b.affiche(b);
		while (b!=null )  {
							
			if (b.contenu == x) {
				if (link.suivant == null) {

					System.out.printf("List contains the last ocurence of the element : %d  in position %d ",x,link.contenu);
					
					//System.out.println("List contains the element "+x);
						
				}	
				else{
					
					
					link=link.suivant;		
					
				}
			
				}
					
			
			
				
			b=b.suivant;
		}
		
	}
	public static void estDansi(int x,Liste a){
		while (a!=null) {
			if (a.contenu == x) {
				//System.out.printf("List contains the element %d  in position ",x);
			
					System.out.println("List contains the element "+x);
					break;
				}

			a=a.suivant;
		}
	}
} 

soyers claire S V P et indulgents  
:D

-
Edité par LibertJoranNOUTCHEU 18 mai 2020 à 7:40:28

  • Partager sur Facebook
  • Partager sur Twitter
18 mai 2020 à 6:56:38

Il y a un problème :

  • quel problème
  • sur quel exemple.

Ps: ça serait bien d'indenter ton code.

-
Edité par michelbillaud 18 mai 2020 à 19:43:29

  • Partager sur Facebook
  • Partager sur Twitter
18 mai 2020 à 17:12:35

Je suis désolé je comprends pas pourquoi il y a autant de post sur ce sujet, je veux dire, ton but est d'implémenter une liste chainé, si tu as compris le concept et que tu connais Java je vois pas ou est le problème, on est quand même pas sur un sujet très compliqué

Maintenant si tu as des erreurs (ce que je peux comprendre) essaie d'être clair évite de poster tout ton code commence par montrer le message d'erreur et la portion de code concernée qu'on puisse aider

-
Edité par Splintz 18 mai 2020 à 17:16:21

  • Partager sur Facebook
  • Partager sur Twitter
18 mai 2020 à 18:39:00

Splintz a écrit:

Je suis désolé je comprends pas pourquoi il y a autant de post sur ce sujet, je veux dire, ton but est d'implémenter une liste chainé, si tu as compris le concept et que tu connais Java je vois pas ou est le problème, on est quand même pas sur un sujet très compliqué

Maintenant si tu as des erreurs (ce que je peux comprendre) essaie d'être clair évite de poster tout ton code commence par montrer le message d'erreur et la portion de code concernée qu'on puisse aider

-
Edité par Splintz il y a environ 1 heure

ok merci du conseil voici mon probleme je afficher la dernier occurence d'une valeur et sa position pour cela j ai utliser deux liste une liste qui stocque les position des indice et l'autre qui parcour notre liste passe en parametre mais le proble est que sa fait le autre chose et enregistre les position dans le desordre

public static void findlast(int x,Liste a)  {
	int i=0,cpt =0;
	Liste link =new Liste(0,null);
	Liste b ;
	b=a;
	while (a!=null) {
		if (a.contenu == x) {
			link=link.insertion (i,link.suivant);
			i++;

			}
			a=a.suivant;			
		}
	while (b!=null  && link !=null )  {						
		if (b.contenu == x) {
			if (link.suivant == null) {
				System.out.printf("List contains the last ocurence of the element : %d  in position %d ",x,link.contenu-1);	
			
			}	
			else{			
				
			link=link.suivant;		
				
			}		
		}	
		b=b.suivant;
	}
		
}

 

-
Edité par LibertJoranNOUTCHEU 19 mai 2020 à 4:39:16

  • Partager sur Facebook
  • Partager sur Twitter
18 mai 2020 à 19:41:47

Ton code est illisible.

Pourrais-tu s'il te plait le reformater en

  • l'indentant correctement
  • supprimant les douzaines de lignes blanches.

Merci.

Parce que, déjà, quand c'est cadré n'importe comment, on doit réfléchir pour savoir quelles instructions vont ensemble. Et quand on réfléchit à ça, on ne réfléchit pas à la signification du code. Là, c'est crade.

-
Edité par michelbillaud 18 mai 2020 à 19:43:51

  • Partager sur Facebook
  • Partager sur Twitter
19 mai 2020 à 20:38:58

Je vais pas te mentir ton code est vraiment pas terrible. Rien qu'au prototype de la méthode je ne comprends pas comment c'est censé marcher, je veux dire :

- findLast : tu cherches la dernière occurrence d'une valeur de ta liste, ok

- int x : surement la valeur que tu cherches, ok

- Liste a : surement la liste qui contient la valeur, ok

- void : tu ne retournes rien ? la je comprends plus, retourne un pointeur sur l'élément qui contient la valeur ou l'indice de l'élément mais il faut retourner quelque chose.

Ce morceaux de code que je ne comprends pas non plus : 

Liste b;
b=a;

A quoi est ce que ça sert ? qu'as tu comme idée en faisant ça ? si c'est pour faire une copie ça ne marchera pas.

Et Enfin pour aider un peu quand même, personnellement j'aurais fais quelque chose comme ça en repartant de la liste chainée et pour trouver la dernière occurrence :

public class Element {
    int value;
    Element next;
}

...

public static Element findLast(int value, Element list){
    Element found = null;
    while(list != null){ /* on parcourt entièrement la liste */
        if(value == list.value) found = list; /* dernier élément avec la valeur recherchée */
        list = list.next;
    }
    return found; /* null si pas trouvée */
}

Je sais même pas si ça compile mais l'idée est la.


  • Partager sur Facebook
  • Partager sur Twitter
25 mai 2020 à 11:39:08

Splintz a écrit:

Je vais pas te mentir ton code est vraiment pas terrible. Rien qu'au prototype de la méthode je ne comprends pas comment c'est censé marcher, je veux dire :

- findLast : tu cherches la dernière occurrence d'une valeur de ta liste, ok

- int x : surement la valeur que tu cherches, ok

- Liste a : surement la liste qui contient la valeur, ok

- void : tu ne retournes rien ? la je comprends plus, retourne un pointeur sur l'élément qui contient la valeur ou l'indice de l'élément mais il faut retourner quelque chose.

Ce morceaux de code que je ne comprends pas non plus : 

Liste b;
b=a;

A quoi est ce que ça sert ? qu'as tu comme idée en faisant ça ? si c'est pour faire une copie ça ne marchera pas.

Et Enfin pour aider un peu quand même, personnellement j'aurais fais quelque chose comme ça en repartant de la liste chainée et pour trouver la dernière occurrence :

public class Element {
    int value;
    Element next;
}

...

public static Element findLast(int value, Element list){
    Element found = null;
    while(list != null){ /* on parcourt entièrement la liste */
        if(value == list.value) found = list; /* dernier élément avec la valeur recherchée */
        list = list.next;
    }
    return found; /* null si pas trouvée */
}

Je sais même pas si ça compile mais l'idée est la.


ok merci beaucoup j ai compris mon erreur au debut je voulais faire une procedure qui aura tous main ses tros long merci pour votre conseil cela ma ete tres utile
  • Partager sur Facebook
  • Partager sur Twitter
10 octobre 2021 à 17:18:54 - Message modéré pour le motif suivant : Message complètement hors sujet


10 octobre 2021 à 17:24:14

@CheikhTidianeBadji Bonjour, merci de ne pas déterrer d'ancien sujet résolu.

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter