Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

LinkedList Struct Typedef in C

I am try to build a basic linked list in C. I seem to get an error for this code:

typedef struct
{
    char letter;
    int number;
    list_t *next;
}list_t;

char letters[] = {"ABCDEFGH"};

list_t openGame, ruyLopez;
openGame.letter = letters[4];
openGame.number = 4;
openGame.next = &ruyLopez;


ruyLopez.letter = letters[5];
ruyLopez.number = 4;
ruyLopez.next = NULL;

It won't accept my definition in the struct:

list_t *next;

And for the same reason it won't accept:

openGame.next = &ruyLopez;
like image 951
oCodaa Avatar asked Sep 02 '13 23:09

oCodaa


1 Answers

When you are using list_t *next in your code, the compiler doesn't know what to do with list_t, as you haven't declared it yet. Try this:

typedef struct list {
    char letter;
    int number;
    struct list *next;
} list;

As H2CO3 pointed out in the comments, using _t as an identifier suffix is not a great idea, so don't use list_t.

like image 95
verbose Avatar answered Oct 08 '22 00:10

verbose