Salut,
j'ai abordé ton problème d'un point de vue bases de données, pour créer un schéma relationnel, mais à partir de là, on peut toujours créer une arborescence de structures pour contenir le tout.
pour moi, en c, ça serait un ensemble de listes chainées, mais pour tout remplir, mettre à jour et exploiter, tu vas t'amuser, surtout s'il s'agit de faire des jointures ou d'autres trucs...
le plus important à mon sens, est de bien faire attention au fait que certaines données peuvent avoir plusieurs occurences par rapport à d'autres, et que le nombre de ces occurences peut être variable. par exemple : un pays a plusieurs diplomates, un menu a plusieurs plats, un plat a plusieurs ingrédients, etc...
donc, on ne peut pas définir une structure de type "plat" qui comporte en elle même et de façon fixée les éléments susceptibles de cointenir les ingrédients. si ta structure plat a 25 ingrédients et que ton plat (ex: la salade de tomates) n'en a que 4, ça peut poser problème.
par conséquent, ce qu'il vaut mieux faire, c'est définir une liste de structures "plat" et une liste de structures "ingrédients", et dans la structure "ingrédient", prévoir un pointeur sur un élément "plat" permettant de faire l'association entre les 2 de façon à ce que plusieurs ingrédients puissent aller pointer sur un même plat.
voici un exemple de quelques structures et du raisonnement à suivre :
une structure Pays
- nom
- continent
- gouvernement
- habitants
- capitale
une structure relations (attention au remplissage à ne pas avoir de doublons)
- Pays1 (pointeur vers élément pays)
- Pays2 (pointeur vers élément pays
- relation (ami, ennemi, etc...)
une structure diplomates (0,1ou plusieurs diplomates par pays)
- pays (pointeur vers élément pays)
- nom
- fonction (président, 1er ministre, etc...)
chaque structure sera en fait le prororype des éléments d'une liste chainée, il faut donc rajouter à tout ça les pointeurs nécessaires pour te ballader à l'intérieur de ta liste chainée (pointeur suivant et précédent), ainsi que prévoir les différents pointeurs de tête, opinteurs de queue, pointeurs courants, etc...
la liste des diplomates contiendra tout les diplomates de la planètes. pour trouver les diplomates d'un pays, il faut parcourir toute la liste et récupérer le nom du pays pointé par le pointeur sur la structure pays associée au diplomate observé à l'instant T pour savoir si le diplomate en question fait bien partie du pays recherché.
cette liste va contenir plusieurs fois le même pays car un pays a généralement plusieurs diplomates. par contre, un diplomate ne travaille généralement que pour un seul pays, et donc chaque diplomate ne sera présent qu'une seule fois dans toute la liste.
la liste relations va contenir l'état des relations entre chaque pays, il faut bien faire attention que pays1, pays2, relation et pays2, pays1, relation, c'est la même chose, et donc, il faut faire bien attention quand on rempli la structure.
donc, chaque pays pourra apparaitre plusieurs fois dans cette liste, mais chaque association entre 2 pays ne pourra apparaitre qu'une seule fois.
etc...
je ne vais pas t'en dire plus, le reste, tu dois essayer de le trouver par toi-même
je reconnais quand même que tout passer en c est assez galère... en gros, tu es en train de recréer un mini système de gestion de bases de données, et tu vas bien t'amuser, avec les pointeurs et autres navigations dans tes listes... je te souhaite bien du plaisir.