tete du loic

 Loïc YON [KIUX]

  • Enseignant-chercheur
  • Référent Formation Continue
  • Responsable des contrats pros ingénieur
  • Référent entrepreneuriat
  • Responsable de la filière F2 ingénieur
  • Secouriste Sauveteur du Travail
mail
loic.yon@isima.fr
phone
(+33 / 0) 4 73 40 50 42
location_on
ISIMA
  • twitter
  • linkedin
  • viadeo

[C] Hall of Fame - saison 2

Date de première publication : 2015/10/06

Nous continuons le TP Hall of fame. Les données seront stockées dans une liste chaînée et non plus dans un tableau

L'idée est d'utiliser ce que vous avez fait dans la partie précédente mais SANS perdre ce travail.


#include<stdio.h>
#include<stdio.h>
#include<string.h>

// recopier votre code de structure
struct donnee {
  // les champs necessaires
}
typedef struct donnee donnee_t ; // alias de type

int main() {

  return 0;
}

Choix du type de liste

Pour manipuler une liste chaînée, vous devez choisir si vous la définissez avec une tête réelle ou une tête fictive.


donnee_t * tr; // tete reelle
donnee_t   tf; // tete fictive
donnee_t creerListe(void);

Premières manipulations

afficherListe(struct donnee   tetefictive);
afficherListe(struct donnee * tetereelle);

Vous avez une liste à 3 éléments, vous devez donc avoir 3 allocations dynamiques - valgrind power

insererListe(struct donnee *  tetefictive, DONNEES);
insererListe(struct donnee ** tetereelle,  DONNEES);

valgrind est un véritable couteau suisse : il est impératif d'utiliser ce programme pour vérifier le rendu mémoire, mais vous devez aussi l'utiliser pour éliminer les erreurs de contexte. Si vous avez un segfault, c'est une bonne habitude de le lancer pour voir ce que le programme vous dit !

Un programme complet

Si tout s'est bien passé, on peut maintenant faire un programme complet (et utiliser la compilation séparée pour ce faire). La structure est placée dans le fichier d'entête accompagnée des déclarations de fonctions concernant la liste chaînée. L'implémentation des fonctions de liste chaînée est dans un fichier c particulier. Le programme principal est dans un dernier fichier de code et propose un menu à base de switch pour réaliser les opérations suivantes (que vous venez plus ou moins de coder)

L'exécution du programme sera vérifiée avec valgrind.

Aller plus loin