0% ont trouvé ce document utile (0 vote)
41 vues5 pages

Struct

Le document présente des structures de données et des fonctions pour gérer des listes chainées et des piles. Il contient des définitions de structures pour représenter des monômes et des noeuds de liste ainsi que des fonctions pour ajouter et supprimer des éléments.

Transféré par

Asmaa Aboufaris
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
41 vues5 pages

Struct

Le document présente des structures de données et des fonctions pour gérer des listes chainées et des piles. Il contient des définitions de structures pour représenter des monômes et des noeuds de liste ainsi que des fonctions pour ajouter et supprimer des éléments.

Transféré par

Asmaa Aboufaris
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

#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();

Vous aimerez peut-être aussi