KioskeaKioskeaCommentCaMarcheInscrivez-vous, c'est gratuit !
Mardi 13 mai 2008 - 03:19:22

Les piles et les files sous le langage C

Rechercher : dans
Les piles et les files sous le langage C
par ISIMG
 Fil de Discussions
Statut : Non résolu
mardi 10 avril 2007 à 19:52:12
Salut,

S'il vous plait des cours et des exercices "Bien Claires" sur les piles et les files sous langage C

Merci
Configuration: Windows XP
Firefox 2.0.0.2
Répondre à ISIMG  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par khadija, le jeudi 18 octobre 2007 à 00:06:05 Fil de Discussions
Bonjour,
j'ai le mm blem et vrm je cè pa koi fair!! aider ns svp!!
Répondre à khadija

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par c-moi, le jeudi 18 octobre 2007 à 08:56:25 Fil de Discussions
Bonjour,

vous voulez un cours expliquant le fonctionnement des piles et des files, en algo, ou sur comment implémenter ce système en C ? De mémoire, il n'y pas grande différence, vu que l'on utilise bien souvent les mêmes structures de données en algo et en C (évidemment, me direz vous).

c-moi, par réveillé...
Répondre à c-moi

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par lami20j, le jeudi 18 octobre 2007 à 11:34:59 Fil de Discussions
Salut,

fichier d'en-tête
/*********************\
 *      pile.h       *
\*********************/
typedef struct ElementListe{
  char *donnee;
  struct ElementListe *suivant;
} Element;

typedef struct ListeRepere{
  Element *debut;
  int taille;
} Liste;

/* initialisation */
void initialisation (Liste * liste);
/* EMPILER*/
int empiler (Liste * liste, Element * courant, char *donnee);

/* DEPILER*/
int depiler (Liste * liste);
/* LastInFirstOut */
void affiche_dernier (Liste * liste);
Les fonctions
/***********************\
 * pile_function.h     *
\***********************/

void initialisation (Liste * liste){
  liste->debut = NULL;
  liste->taille = 0;
}

int empiler (Liste * liste, Element * courant, char *donnee){
  Element *nouveau_element;
  if ((nouveau_element = (Element *) malloc (sizeof (Element))) == NULL)
    return -1;
  if ((nouveau_element->donnee = (char *) malloc (50 * sizeof (char)))
      == NULL)
    return -1;
  strcpy (nouveau_element->donnee, donnee);
  nouveau_element->suivant = liste->debut;
  liste->debut = nouveau_element;
  liste->taille++;
}

int depiler (Liste * liste){
  Element *supp_element;
  if (liste->taille == 0)
    return -1;
  supp_element = liste->debut;
  liste->debut = liste->debut->suivant;
  free (supp_element->donnee);
  free (supp_element);
  liste->taille--;
  return 0;
}

void affiche_dernier (Liste * liste){
/* le dernier entre et le 1er affiche (LastInFirstOut) */
  printf ("dernier entrer premier sortie (LIFO): %s\n",
                  liste->debut->donnee);
}
main
/*********************\
 *      pile.c       *
\*********************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "pile.h"
#include "pile_function.h"

int main ()
{
  Liste *liste;
  char *nom;
  if ((liste = (Liste *) malloc (sizeof (Liste))) == NULL)
    return -1;
  if ((nom = (char *) malloc (50 * sizeof (char))) == NULL)
    return -1;
  initialisation (liste);

  printf ("Entrez un mot : ");
  scanf ("%s", nom);
  empiler (liste, NULL, nom);
  affiche_dernier (liste);      /*le dernier entre sera affiche */
  printf ("La pile(%d): %s\n",
                  liste->taille,
                  liste->debut->donnee);

  printf ("Entrez un mot : ");
  scanf ("%s", nom);
  empiler (liste, NULL, nom);
  affiche_dernier (liste);
  printf ("La pile(%d):%s,%s\n",
          liste->taille,
          liste->debut->donnee,
          liste->debut->suivant->donnee);

  printf ("Entrez un mot : ");
  scanf ("%s", nom);
  empiler (liste, NULL, nom);
  printf ("La pile(%d): %s,%s,%s\n",
          liste->taille,
          liste->debut->donnee,
          liste->debut->suivant->donnee,
          liste->debut->suivant->suivant->donnee);
  affiche_dernier (liste);
  printf ("Le dernier entre est supprime");
  depiler (liste);              /* suppression de dernier element entre */
  printf ("\nLa pile(%d): %s,%s\n",
          liste->taille,
          liste->debut->donnee,
          liste->debut->suivant->donnee);
  return 0;
}
--
lami20j
Répondre à lami20j

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par ll, le vendredi 16 novembre 2007 à 23:36:49 Fil de Discussions
Bonjour,

la solution précédente fonctionne très bien, mais sans pouvoir faire une boucle avec un nombre infini d'enregistrement. Ainsi, pour aller rechercher la dernière donnée entrée, il faut faire liste->debut->suivant->suivant->...suivant...->donnee . Et cela ne peut pas être fait pour une boucle.

Comment pourrions-nous faire?
Répondre à ll

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par lami20j, le vendredi 16 novembre 2007 à 23:46:05 Fil de Discussions 
Salut,

la dernière donnée entrée tu la trouves en fait au début de la liste
liste->debut->donnee

ce que tu cherches c'est en fait le 1er élément entré
mais ici il s'agit d'une pile

tu dois plutôt regarder liste simplement chaînée

pour aller rechercher la dernière donnée entrée,
et tu n'auras qu'à faire liste->fin->donnee
lami20j
Répondre à lami20j
Discussions pertinentes trouvées dans le forum
17/03 19h15piles,files en langage cProgrammation17/03 19h431
09/03 12h08langage c pile de depile urgent!!!!!Programmation09/03 13h432
20/01 17h59pile et file en c++ avec le graphiqueProgrammation20/01 18h441
14/05 17h09Mon film à 2 langues, comment graver en FRGravure16/05 18h211
Plus de discussions sur « Les piles et les files sous le langage C » Discussion en cours Discussion fermée Problème résolu
Répondre
Titre du message :
Votre pseudo:
Votre email :
Message: 
  •  
  •  
Options: Recevoir les réponses par mail.
 

Aide