Moi je ferais un arbre avec la structure.
struct article {
.,.int code;
.,.char *nom;
.,.float prix;
.,.struct article *prev, *next;
} root, *current, *last;
void init_tree (void) {
.,.root.code = 1;
.,.root.nom = malloc (128);
.,.sprintf (root.nom, "premier article");
.,.root.prix = 1.99;
.,.current = &root;
.,.last = current;
}
void destroy_tree (void) {
.,.current = last;
.,.while (current->prev) {
.,..,.if (current->nom) free (current->nom);
.,..,.if (current->prev) current = current->prev;
.,..,.free (current->next);
.,..,.last = current;
.,.}
}
void nouvel_article (int code2, char *nom2, float prix2) {
.,.current = last;
.,.current->next = malloc (sizeof(root));
.,.current->next->prev = current;
.,.current = current->next;
.,.current->next = NULL;
.,.if (code2 == NULL) current->code = current->prev->code + 1;
.,.else current->code = code2;
.,.current->name = malloc (strlen(nom2)+1);
.,.sprintf (current->name, "%s", nom2);
.,.current->prix = prix2;
.,.last = current;
}
void affiche_article (int code2) {
.,.current = &root;
.,.int x;
.,.for (x=0; x< last->code; x++) {
.,..,.if (current->code == code2) {
.,..,..,.printf ("#%d: %s @ %f\n", current->code, current->nom, current->prix);
.,..,..,.break;
.,..,.}
.,..,.if (current->next) current = current->next;
.,..,.else printf ("article #%f non présent\n", code2);
.,.}
}
int main (void) {
.,.init_tree ();
.,.nouvel_article (12874, "Pain panini", 0.75);
.,.destroy_tree ();
.,.init_tree ();
.,.nouvel_article (2, "Pestene, Huile d'olive", 6.99);
.,./* etc etc */
}
/* PS: code non testé, pseudo-code
-->Message édité par esselfe le 23/03/2008 17:17:55<--
-------
vive Linux!
|