首页 文章

如何正确创建链表

提问于
浏览
1
// creating a struct to store number of cd's, titles, and count
struct CD_type_node
{
    int cd_number;
    char title[20];
    int count;
    struct CD_type_node* next;
};

struct CD_type_node* mylist = NULL; // declaring a struct of type CD_type_node
struct CD_type_node* header;// head pointer for accessing linked list
header = NULL;

header = malloc(sizeof(struct mylist));
header = mylist;

while(header != NULL)
{
    header = header->next;
}

有人可以告诉我如何正确创建一个链表以及如何动态分配内存因为我得到一个错误:“sizeof”无效应用于不完整的结构mylist

3 回答

  • 3

    你的问题在这里

    header = malloc(sizeof(struct mylist));
    

    因为 mylist 是一个类型为 struct CD_type_node* 的变量,所以

    header = malloc(sizeof(*mylist));
    

    很好

    header = malloc(sizeof(struct CD_type_node));
    

    但是 struct mylist 是错误的:它没有命名可以从中提取类型的类型或变量 .

  • 2

    我将节点创建提取为这种形式的函数:

    void AddNode(struct CD_type_node **head)
    {
        struct CD_type_node *newNode = malloc(sizeof(struct CD_type_node));
        newNode->next = *head;
        *head = newNode;
    }
    

    为方便起见,您可能希望传入结构中的其他字段并获取此例程以使用这些值填充新节点 . 但是这个例程让你了解如何进行分配和下一个指针代码 .

  • 2

    你需要使用 sizeof(struct CD_type_node) .

相关问题