1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
|
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#define SMALLOC(X) (X*)malloc(sizeof(X))
struct Tete *CreeTete(void);
struct Data *AffecteData(int Lig, int Col, char *Lib);
struct Noeud *CreeNoeud (struct Noeud *Prec, struct Noeud *Suiv, struct Data *Don);
void AjoutDataFinListe(struct Tete *PtrTete, struct Data *Don);
void AfficheData(struct Tete *PtrTete);
struct Tete
{
struct Noeud *Premier;
struct Noeud *Dernier;
int NbrNoeuds;
};
struct Noeud
{
struct Noeud *Prec;
struct Noeud *Suiv;
struct Data *Don;
};
struct Data
{
int Lig;
int Col;
char Lib[50];
};
void main()
{
struct Tete *PtrTete;
PtrTete = CreeTete();
AjoutDataFinListe(PtrTete, AffecteData(10,10,"OYE2"));
//AfficheData(PtrTete);
AjoutDataFinListe(PtrTete, AffecteData(10,10,"OYE3"));
AfficheData(PtrTete);
getchar();
}
struct Tete *CreeTete(void)
{
struct Tete *Ptr;
Ptr = SMALLOC(struct Tete);
Ptr->NbrNoeuds = 0;
Ptr->Premier = Ptr->Dernier = NULL;
return(Ptr);
}
struct Data *AffecteData(int Lig, int Col, char *Lib)
{
struct Data *Ptr;
Ptr = SMALLOC(struct Data);
Ptr->Lig = Lig;
Ptr->Col = Col;
strcpy(Ptr->Lib, Lib);
return(Ptr);
}
struct Noeud *CreeNoeud (struct Noeud *Prec, struct Noeud *Suiv, struct Data *Don)
{
struct Noeud *Ptr;
Ptr = SMALLOC(struct Noeud);
Ptr->Prec = Prec;
Ptr->Suiv = Suiv;
Ptr->Don = Don;
return (Ptr);
}
void AjoutDataFinListe(struct Tete *PtrTete, struct Data *Don)
{
struct Noeud *Ptr;
if (!PtrTete->Dernier)
{
Ptr = CreeNoeud(NULL, NULL, Don);
PtrTete->Premier = PtrTete->Dernier = Ptr;
PtrTete->NbrNoeuds++;
}
else
{
Ptr = CreeNoeud(PtrTete->Dernier, NULL, Don);
PtrTete->Dernier->Suiv = Ptr;
PtrTete->Dernier = Ptr;
PtrTete->NbrNoeuds++;
}
}
void AfficheData(struct Tete *PtrTete)
{
struct Noeud *Suivant;
Suivant = PtrTete->Dernier;
while (Suivant)
{
printf("%s", Suivant->Don->Lib);
printf("%d", PtrTete->NbrNoeuds);
Suivant = Suivant->Suiv;
}
} |
Partager