C语言链表添加书籍函数add_book详解
这段代码定义了一个函数add_book,该函数可以向链表中添加一本新书。函数的参数包括一个指向链表头节点的指针head,书籍的id,书名name和作者author。
在函数中,首先使用malloc函数分配了一个Book类型的内存空间,然后将传入的id、name和author赋值给该内存空间中的对应字段。同时,将该书籍的状态status初始化为0,表示未被借出。
接下来,将该书籍节点的next指针指向链表头节点,以便将其插入链表中。最后,将链表头指针head指向该新节点,完成了新书的添加。
void add_book(Book **head, int id, char *name, char *author) {
Book *new_book = (Book*)malloc(sizeof(Book));
new_book->id = id;
strcpy(new_book->name, name);
strcpy(new_book->author, author);
new_book->status = 0; // 初始状态为未借出
new_book->next = *head;
*head = new_book;
}
代码解释:
-
函数声明:
void add_book(Book **head, int id, char *name, char *author)- 该函数名为
add_book,返回值类型为void,表示函数不返回任何值。 - 参数列表:
Book **head: 指向链表头节点的指针的指针。int id: 书籍的id。char *name: 书籍的名称。char *author: 书籍的作者。
- 该函数名为
-
内存分配:
Book *new_book = (Book*)malloc(sizeof(Book));- 使用
malloc函数为一个新的Book结构体分配内存空间,并将其地址赋值给指针new_book。
- 使用
-
数据赋值:
new_book->id = id;strcpy(new_book->name, name);strcpy(new_book->author, author);- 将传入的id、name和author赋值给新分配的
Book结构体中相应的字段。
-
状态初始化:
new_book->status = 0;- 将新书的状态
status初始化为0,表示该书尚未被借出。
- 将新书的状态
-
插入链表:
new_book->next = *head;- 将新节点的
next指针指向原链表的头节点,即将新节点插入链表的头部。
- 将新节点的
*head = new_book;- 将链表的头指针
head指向新节点,使新节点成为链表的新头部。
- 将链表的头指针
总结:
该代码通过malloc函数动态分配内存空间,并将传入的参数赋值给新节点的相应字段,并通过将新节点的next指针指向原链表头节点以及更新链表头指针的方式,将新书插入到链表的头部。
原文地址: https://www.cveoy.top/t/topic/mpSv 著作权归作者所有。请勿转载和采集!