hibOu
:
cicdrek
:
enfin comment creer une liste chainée de caractere ajouter des elements et faire une recherche dans cette chaine?
tu définis ca :
struct listeC {
struct listeC * lc_suivante;
struct listeC * lc_precedente; //celle la c'est pas obligé
char caracter;
}
creer : l=malloc(sizeof(struct listeC));
l->lc_suivante=NULL;
ajouter : boucle sur la liste pour arriver au dernier et faire un créer
rechercher : boucle à partir du premier
merci de ton aide hibou
j ai un autre probleme voila en fait je veut gerer 2 piles avec yacc et lex
et en prenant un nombre en entrée j arrive pas a empiler sur la pile principale il empile systematiquement 0....
voila mon code enfin la partie qui t interesse
%{
#include <stdio.h>
#include <ctype.h>
#define MAX_PILE 200
#define YYSTYPE double
typedef struct
{
int tab_elts[MAX_PILE];
int nb_elts;
} T_Pile;
T_Pile pile_prim;
void empiler_prim(int val);
%}
%token NOMBRE add
%%
ligne : ligne expr '\n' { printf("%d\n",$2); }
| ligne '\n'
|
;
expr : add { empiler_prim( depiler_prim() + depiler_prim()); }
| NOMBRE { empiler_prim(atof(yytext)); }
| resul {printf("Voici le resultat : %d\n",depiler_prim());}
;
void pilevide_prim()
{
pile_prim.nb_elts = 0;
}
void pilevide_seco()
{
pile_seco.nb_elts = 0;
}
void empiler_prim(int val)
{
if (pile_prim.nb_elts == MAX_PILE)
yyerror("Pile principale est pleine...");
else
{
printf("j'empile : %d \n",val);
pile_prim.tab_elts[pile_prim.nb_elts++]=val;
}
}
int main()
{
pilevide_seco();
pilevide_prim();
yyparse();
}
et mon lex ressemble a ca:
%{
#include <stdlib.h>
#include "y.tab.h"
%}
chiffre [0-9]
nombre {chiffre}+(\.{chiffre}+)?
%%
{nombre} {atoi(yytext); return NOMBRE; }
"+" {return add;}
%%
je comprend pas ce 0 quoi que je fasse mais je sais qu il empile des 0 et non le nombre que je rentre au clavier mais il empile...