C中的LinkedList Struct Typedef

oCo*_*daa 5 c data-structures

我试图在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;
Run Code Online (Sandbox Code Playgroud)

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

list_t *next;
Run Code Online (Sandbox Code Playgroud)

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

openGame.next = &ruyLopez;
Run Code Online (Sandbox Code Playgroud)

ver*_*ose 10

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

typedef struct list {
    char letter;
    int number;
    struct list *next;
} list;
Run Code Online (Sandbox Code Playgroud)

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

  • 根据您的代码,第三行应该是 struct list *next 。否则我们可以执行以下操作。typedef struct list list; 结构列表 { 字符字母; 整数;列出*下一个;}; (2认同)