Bonjour,
Dans le cadre d'un petit projet de fac, je dois faire un algorithme permettant de transformer un automate à état fini non déterministe en automate à état fini déterministe.
Je vous passe les détails.
Je dois donc délarer 2 structures : etat et transition qui modèliseront mon automate.

Mais je suis confronté à un petit soucis. Ma structure "etat" à besoin de ma structure "transition" et vice versa.
J'ai donc du procéder de la manière suivante :

Contenu de etat.h :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef _ETAT_H
#define _ETAT_H
 
#include <stdlib.h>
#include "transition.h"
 
//Structure
typedef struct etat
{
	int estFinal;
	struct transition* ptrTransition;
}etat;
 
//Procédure et fonctions
void addTransition(etat* e, struct transition* t); 
 
#endif
Contenu de transition.h :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef _TRANSITION_H
#define _TRANSITION_H
 
#include <stdlib.h>
#include "etat.h"
 
//Structure
typedef struct transition
{
	struct transition* transitionSuivante;
	struct etat* ptrEtat;
	char* type;
}transition;
 
//Procédure et fonctions
 
#endif
Cette solution fonctionne mais j'aimerais savoir comment déclarer au mieux mes structures car il y a plusieurs façons possibles de les déclarer. Ma façon m'oblige à mettre le mot clé struct devant les argument de pointeurs de structure dans mes fonctions et je suis sûr qu'on peut faire sans.

Par exemple dans etat.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
void addTransition(etat* e, struct transition* t);
Merci et bonne journée/soirée !