Liste chaînée à deux dimensions ?

Résolu/Fermé
izangard_sda Messages postés 17 Date d'inscription mercredi 7 novembre 2012 Statut Membre Dernière intervention 30 avril 2015 - 14 nov. 2014 à 14:27
izangard_sda Messages postés 17 Date d'inscription mercredi 7 novembre 2012 Statut Membre Dernière intervention 30 avril 2015 - 17 nov. 2014 à 21:10
Bonjour,

Je bloque depuis un moment, j'aimerais créer une liste chaînée à deux dimensions.. c'est à dire que j'aimerais que dans une liste chaînée je puisse accéder à une autre liste chaînée.

Par exemple je souhaiterais stocker mon fichier CSS dans des listes.
a { 
front-family: arial;
color: blue;
}


Ici j'aimerais stocker l'ID c'est à dire "a" dans une première liste, qui en même temps que le "a" stockerais aussi le contenu du traitement de "a"...

Je sollicite donc votre aide car je ne sais vraiment pas si c'est possible pour commencer. Et si c'est possible je ne vois pas comment le déclarer dans ma structure... :( Si vous avez une autre solution plus simple je suis preneuse aussi.

Merci à vous :)


3 réponses

salut

le plus simple est de déclarer une structure qui contiendra un tableau de chaine (char**) + le nom de la balise.

Ensuite faire une liste chainée de cette structure (ou un tableau simple ... ce qui je pense est suffisant dans ton cas).

naga

ps : tu es obligé de faire en c ou en c++ c'est bon?
1
izangard_sda Messages postés 17 Date d'inscription mercredi 7 novembre 2012 Statut Membre Dernière intervention 30 avril 2015
14 nov. 2014 à 14:52
J'avais pensé à des listes chaînées car je ne connais pas la taille dont j'en aurais besoin, et si je me trompe pas pour les tableaux on est censé définir une taille max...

Ce programme je suis obligé de le réaliser en C tout simplement :/ En gros l'utilisateur entre X fichier(s) .css et mon programme est censé optimiser le code et ressortir qu'un seul fichier final .css

izangard_sda
0
Utilisateur anonyme
14 nov. 2014 à 15:15
en effet au moment de l'initialisation il faut que tu donne une taille max, mais tu peux simplement réallouer ton contenu (ou plutot agrandir).

La structure de base reste la même. Ce qu'il faudrai faire donc c'est avoir ta structure qui contiendra une liste chaînée de char* (** donc). Le principe sera donc :

pour chaque noeud (a dans l'exemple), allouer le bon contenu, récupérer l'adresse de ton objet (la première case) et l'ajouter dans un tableau.

en gros tu auras :


struct collection
{
char * sName;
char * sValue;

collection * NextCollect;
};


et

struct noeud
{
char * sName;
collection* tCollection;

noeud * NextNoeud;
};



c'est un peu brouillon, je n'ai pas de compilateur sous la main (taf). Mais tu as pas mal d'exemple ensuite concernant les allocations.

naga
0
izangard_sda Messages postés 17 Date d'inscription mercredi 7 novembre 2012 Statut Membre Dernière intervention 30 avril 2015
15 nov. 2014 à 18:13
Je vois de quoi tu parle, je teste ça et je te tiens au courant :)

Merci :D
0
izangard_sda Messages postés 17 Date d'inscription mercredi 7 novembre 2012 Statut Membre Dernière intervention 30 avril 2015
17 nov. 2014 à 15:01
Bon j'ai bien compris la logique de tes structures... mais je me perds un peu moi même dans mon code..
Je vois plus trop comment je pourrais créer des boucles pour copier bien comme il le faut le A dans noeud et le contenu dans la liste..
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
14 nov. 2014 à 18:29
Bonjour,

Effectivement ce n'est pas commun, mais oui tu peux faire deux listes chaînées.
Qu'est-ce qui te bloque pour la liste chaînée à "double dimension" ? Il suffit de faire une liste chaînée et en champ, tu remets une liste.

Cdlt,
0
izangard_sda Messages postés 17 Date d'inscription mercredi 7 novembre 2012 Statut Membre Dernière intervention 30 avril 2015
17 nov. 2014 à 15:05
C'est bon je vois comment faire deux listes chaînées, ce qui me bloque vraiment c'est plutôt ma logique...
0
izangard_sda Messages postés 17 Date d'inscription mercredi 7 novembre 2012 Statut Membre Dernière intervention 30 avril 2015
17 nov. 2014 à 21:10
0