C中的LinkedList Struct Typedef

我试图在C中构建一个基本的链表。我似乎得到这个代码的错误:

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; 

它不会接受我在结构中的定义:

 list_t *next; 

出于同样的原因,它不会接受:

 openGame.next = &ruyLopez; 

当您在代码中使用list_t *next时,编译器不知道如何处理list_t ,因为您还没有声明它。 试试这个:

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

正如H2CO3在评论中指出的那样,使用_t作为标识符后缀并不是一个好主意,所以不要使用list_t

你为什么要自己设置openGameruzeLopez作为指针并且你不必使用& (这是使用链接列表的常用方法,只是不要忘记使用->来访问成员)

请尝试此代码:

 #include  #include  typedef struct list { char letter; int number; struct list *next; }list; main(void) { char letters[] = "ABCDEFGH"; //what were the braces for ? list *openGame, *ruyLopez; openGame = ruyLopez = NULL; openGame = malloc(sizeof(list)); ruyLopez = malloc(sizeof(list)); openGame->letter = letters[4]; openGame->number = 4; openGame->next = ruyLopez; ruyLopez->letter = letters[5]; ruyLopez->number = 5; ruyLopez->next = NULL; } 

这是一个工作示例,没有使用malloc创建结构导致内存泄漏的风险。

 #include  typedef struct _list { char letter; int number; struct _list *next; } list_type; int main(void) { char letters[] = "ABCDEFGH"; //what were the braces for ? list_type openGame, ruyLopez; openGame.letter = letters[4]; openGame.number = 4; openGame.next = &ruyLopez; ruyLopez.letter = letters[5]; ruyLopez.number = 5; ruyLopez.next = NULL; }