在Typedef Struct链接列表C

时间:2015-11-06 19:17:25

标签: c struct linked-list typedef

我无法理解为什么会收到此错误:

error : expected identifier before '(' token 

每次我想在Etat结构中填充Trans结构的数据时出现错误

以下是代码:

#include<stdio.h>
#include<stdlib.h>

typedef struct Transition Transition;
struct Transition
{
    char symb[5];
    int  nvEtat[5];
};

typedef struct Etat Etat;
struct Etat
{
    int     etat;
    Transition trans;
    int     estFinal; /* Etat final ou non */
    Etat    *suivant;
};

Etat *tete=NULL;
Etat *p;
/*_______________________________________________________________
*/
void Ajouter(void){
    int i,j,k;
    Etat *nouveau;

    j=0;
    while(j=0)
    {

        nouveau = calloc(1,sizeof (struct Etat));
        if(nouveau!=NULL){

            printf("\nNumero de l'etat : ");
            scanf("%d",&(nouveau->etat));

            i=0;
            for(i=0;i<5;i++)
            {
             nouveau->(trans->symb[i]) = 'a' ; /*initialize all symbols to a*/
            }

            i=0;
            while(k==0 && i<5)
            {
             printf("Avec quel symbole vers le nouvel etat : ");
             scanf(" %c",&(nouveau->(trans->symb[i])));

             printf("Vers quel etat : ");
             scanf("%d",&(nouveau->(trans->nvEtat[i])));

             printf("Y a t-il encore des transition depuis cet etat ? (0 pour oui ) ");
             scanf("%d",&k);
             i++;
            }

            printf("\nEst ce que c'est un etat final ? ( 0 final , 1 non )");
            scanf("%d",&(nouveau->estFinal));

            if(tete==NULL){
                tete=nouveau;
            }else{
                p = tete;
                while(p->suivant !=NULL){
                    p=p->suivant;
                }
                p->suivant = nouveau;
            }

            printf("\nVoulez vous ajouter une autre transition? (0 pour ajouter) ");
            scanf("%d",&j);

        }else{
            perror("\nPas assez de memoire ");
            exit(1);
        }
    }
}
/*_______________________________________________________________
*/
/*_______________________________________________________________
*/
int main(void){
    Ajouter();
    Afficher();
    return 0;
}

如果你能给我一种使用结构类型的方法,比如&#34;转型&#34;在另一个非常有用的结构中!

感谢您的帮助。

PS:我会尝试用英语翻译printfs,如果它有助于理解代码

0 个答案:

没有答案