#include <stdio.
h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
struct donnees_monome{int degre; float coef;};
struct noeud_monome
{struct donnees_monome D; struct noeud_monome *suivant;};
typedef struct donnees_monome DM;
typedef struct noeud_monome* mon;
mon ajouterEnTete(mon Tete, DM X)
{ /* On cr�e un nouveau �l�ment */
int taille=sizeof(struct noeud_monome);
mon nouvelleMonome =(mon) malloc(taille);
/* On remplie les donn�es du nouveau �l�ment */
nouvelleMonome->D=X;
// On affecte l'adresse de l'ancienne tete
//au champs suivant de la nouvelle tete
//qui est nouvelleMonome
nouvelleMonome->suivant = Tete;
//On retourne la nouvelle tete
return nouvelleMonome;
}
mon ajouterEnFin(mon TeteActuelle, DM d)
{int taille=sizeof(struct noeud_monome);
mon nouvelleMonome=(mon)malloc(taille);
nouvelleMonome->D=d;
nouvelleMonome->suivant = NULL;
if(TeteActuelle == NULL)
{return nouvelleMonome;}
else
{ mon temp=TeteActuelle;
while(temp->suivant != NULL) {temp = temp->suivant;}
temp->suivant = nouvelleMonome;
return TeteActuelle; }
}
//impl�mentation d'une pile de caract�res par tableau
#include<stdio.h>
#include<conio.h>
#define max 100
struct pile
{char vec[max];
int sommet; };
struct pile p;
void raz()
{p.sommet=-1;}
int estVide()//vide
{if (p.sommet!=-1)
return 0;
else return 1;
}
void depiler()
{ p.sommet--; }
char dernier()
{ return(p.vec[p.sommet]); }
void empiler(char x)
{ p.sommet++; p.vec[p.sommet]=x; }
void affichPile()
{int i;printf("\n aff pile: ");
for(i=0;i<=p.sommet;i++) printf(" %c ",p.vec[i]); }
int isDelimiter(char c)
{if(c=='{' ||c=='}' ||c=='[' ||c==']' ||c=='(' ||c==')' ) return 1;
else return(0);
}
main()
{
char ch[100]="int A={(3+T[6*M[4]]), 123}";
int correct=1 , i=0;
raz();
///****compl�ter votre tp****///
getch();
}
4) Version : File d’attente par Listes chainées:
struct noeud {char nom[20]; struct noeud *nxt;};
typedef struct noeud* pe;
void afficherFile(pe Tete)
{ printf("\n\n affichage de la liste :\n"); pe ptrNoeudCourant=Tete;
while(ptrNoeudCourant!=NULL)
{printf("%s\n",ptrNoeudCourant->nom); ptrNoeudCourant=ptrNoeudCourant->nxt; }
}
pe Enfiler(pe TeteActuelle, char nomF[])
{ pe nouvCaractere = (pe)malloc(sizeof(noeud));
strcpy(nouvCaractere->nom , nomF); nouvCaractere->nxt = NULL;
if(TeteActuelle == NULL) {return nouvCaractere;}
else {pe temp=TeteActuelle;
while(temp->nxt != NULL) {temp = temp->nxt; }
temp->nxt = nouvCaractere; return TeteActuelle; }
pe Defiler(pe TeteActuelle)
{ if(TeteActuelle != NULL) {pe aRenvoyer = TeteActuelle->nxt; free(TeteActuelle); return aRenvoyer; }
else {return NULL;} }
main()
{pe T=NULL;
int code, Encore=1; char NomFichier[20];
while(Encore==1)
{printf("\n Pour ajouter un fichier entrer 1");
printf("\n Pour supprimer un fichier entrer -1");
printf("\n Pour afficher la file entrer 2");
printf("\n Pour Quiter entrer 0\n");
scanf("%d",&code);
switch(code)
{case 1 : printf("\n Entrer le nom du fichier:");
fflush(stdin);gets(NomFichier);
T=Enfiler(T,NomFichier); break;
case -1: T=Defiler(T); break;
case 2 : afficherFile(T); break;
case 0 : Encore=0;
getch();
}
4) Version : File d’attente par Listes chainées:
struct noeud {char nom[20]; struct noeud *nxt;};
typedef struct noeud* pe;
void afficherFile(pe Tete)
{ printf("\n\n affichage de la liste :\n"); pe ptrNoeudCourant=Tete;
while(ptrNoeudCourant!=NULL)
{printf("%s\n",ptrNoeudCourant->nom); ptrNoeudCourant=ptrNoeudCourant->nxt; }
pe Enfiler(pe TeteActuelle, char nomF[])
{ pe nouvCaractere = (pe)malloc(sizeof(noeud));
strcpy(nouvCaractere->nom , nomF); nouvCaractere->nxt = NULL;
if(TeteActuelle == NULL) {return nouvCaractere;}
else {pe temp=TeteActuelle;
while(temp->nxt != NULL) {temp = temp->nxt; }
temp->nxt = nouvCaractere; return TeteActuelle; }
pe Defiler(pe TeteActuelle)
{ if(TeteActuelle != NULL) {pe aRenvoyer = TeteActuelle->nxt; free(TeteActuelle); return aRenvoyer; }
else {return NULL;} }
main()
{pe T=NULL;
int code, Encore=1; char NomFichier[20];
while(Encore==1)
{printf("\n Pour ajouter un fichier entrer 1");
printf("\n Pour supprimer un fichier entrer -1");
printf("\n Pour afficher la file entrer 2");
printf("\n Pour Quiter entrer 0\n");
scanf("%d",&code);
switch(code)
{case 1 : printf("\n Entrer le nom du fichier:");
fflush(stdin);gets(NomFichier);
T=Enfiler(T,NomFichier); break;
case -1: T=Defiler(T); break;
case 2 : afficherFile(T); break;
case 0 : Encore=0;
getch();