Rechercher : dans
Par :

Les piles et les files sous le langage C

Dernière réponse le 16 nov 2007 à 23:46:05 ISIMG, le 10 avr 2007 à 19:52:12 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « Les piles et les files sous le langage C » dans :
Les piles en langage C Voir Les piles Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la pile IV. Opérations sur les piles A. Initialisation B. Insertion d'un élément dans la pile C. Ôter un élément de la pile D. Affichage...
Les files en langage C VoirLes files - Premier Entré Premier Sorti Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la file IV. Opérations sur les files A. Initialisation B. Insertion d'un élément dans la file C. Oter un...
Introduction au langage C VoirPetite histoire du C Le langage C a été mis au point par D.Ritchie et B.W.Kernighan au début des années 70. Leur but était de permettre de développer un langage qui permettrait d'obtenir un système d'exploitation de type UNIX portable. D.Ritchie...
Caractéristiques du langage C VoirLe fichier source Le fichier source d'un programme écrit en langage C est un simple fichier texte dont l'extension est par convention .c. Note d'un visiteur (J.Grondin) : L'extension est en minuscules. Le .C (majuscule) est interprété par...
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...

2

khadija, le 18 oct 2007 à 00:06:05

Bonjour,
j'ai le mm blem et vrm je cè pa koi fair!! aider ns svp!!

Répondre à khadija

3

c-moi, le 18 oct 2007 à 08:56:25

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

lami20j, le 18 oct 2007 à 11:34:59
  • +7

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

ll, le 16 nov 2007 à 23:36:49

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

 lami20j, le 16 nov 2007 à 23:46:05

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
Collection CommentÇaMarche.net