Programme en c

Fermé
Nin@ - 17 mai 2008 à 17:49
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 17 mai 2008 à 18:52
Bonjour,
il faut ecrire une fonction void inverse(ptr&L1,ptr&L2)
qui empile les mots a partir d'une liste chainer dans une pile
et qui les depile dans une autre liste chaine pour avoir comme resultat
L1 = java->de->cours
L2 = cours->de->java

j'ai mem pas reusi a construir la pile
voilà ce que j'ai fait pour la pile
please please
c'est urgent

2 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
17 mai 2008 à 17:59
0
jeremiethe7
17 mai 2008 à 18:43
salut, lami20j t'a normalement parfaitement aidé mais j'ai un petit programme aussi.

#include <stdio.h>
#include <string.h>
#include<iostream.h>
/*    ================================
      Gestion d'une Pile par liste cha?n?e
      Ici Pile de pr?noms, par j?r?mie obert
      ================================
*/
/* ===========================
   d?finition du type de structure 
   qui représente un jeton de la pile 
   ===========================
   */
typedef struct Pile{
        char prenom[20];
        struct  Pile *suivant;
}Pile;

/* ===========================
   D?finition de la t?te de pile 
   par un pointeur de pointeur
   ===========================
   */
   
typedef Pile* ListePile;



/*      ======================
        Fonction Empiler
        ======================
*/


void empiler(ListePile *maPile, char* pre)
/* ou void empiler(Pile **maPile, char* pre) */
{
/* 1) cr?er un nouveau jeton vide */
Pile *nouveau = (Pile*) malloc(sizeof(Pile)) ; 
/* 2) remplir le nouveau jeton par les donn?es (ici pr?nom) */
strcpy(nouveau->prenom,pre);
/* 3) Inserer le nouveau jeton en t?te de pile */
nouveau->suivant=*maPile ;
/* 4) Donner au nouveau jeton l'adresse de t?te de liste */
*maPile = nouveau ; 
}
/*      ============================
        Fonction Depiler
        ============================
*/
char* depiler(ListePile *maPile){
/* 1) r?cup?rer les donn?es (ici le pr?nom) du jeton du haut */
char pren[20];
Pile *pcourant = *maPile ;
strcpy(pren,pcourant->prenom);
/* 2) le jeton en dessous de celui du haut devient
      le jeton du haut */
*maPile = pcourant->suivant;
/* 3) supprimer l'ancien jeton du haut :
   lib?rer le pointeur */
free(pcourant);
/* 4) renvoyer les donn?s d?pil?es (ici le pr?nom)*/
return pren;
}
/* =====================================
   Fonction Principale : main()
   =====================================
*/
int main()
{
     /* initialiser le pointeur du sommet de la pile */
     ListePile maPile = NULL;
     /* ou Pile* *maPile=NULL; */
     /* Ajouter un jeton sur la pile : appeler
        la fonction empiler */
	empiler(&maPile,"alain");
   	empiler(&maPile,"annie");
   	empiler(&maPile,"gilles");
/* D?piler toute la pile : boucle sur appel de la fonction
           depiler */
   while(maPile)
   {
         char pr[20];
         strcpy(pr,depiler(&maPile));
         printf(" prenom = %s\n ",pr) ;
   }
     system("pause");
}


voilou, +
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
17 mai 2008 à 18:52
Salut,

tant mieux ;-)
pour un paresseux comme môa écrire un code si longue samedi ....... ;-)
0