Liste chaînée à deux dimensions ?

Résolu
izangard_sda Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   -  
izangard_sda Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   -
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 :)


A voir également:

3 réponses

Utilisateur anonyme
 
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   Statut Membre Dernière intervention  
 
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
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention   1 846
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
0