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
。
你为什么要自己设置openGame
和ruzeLopez
作为指针并且你不必使用&
(这是使用链接列表的常用方法,只是不要忘记使用->
来访问成员)
请尝试此代码:
#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; }