基于链式存储结构的图书信息表的创建和输出c语言代码
时间: 2024-10-18 21:06:39 浏览: 33
在C语言中,基于链式存储结构的图书信息表通常会包含书籍的标题(title)、作者(author)和出版社(publisher)等字段,并以链表的形式存储。以下是创建一个简单的图书链表节点和打印链表的示例代码:
```c
#include <stdio.h>
#include <stdlib.h> // 需要malloc用于动态分配内存
// 定义链表节点结构体
typedef struct Book {
char title[100];
char author[100];
char publisher[100];
struct Book* next; // 指向下一个节点的指针
} Book;
// 创建一个新的图书节点
Book* create_book_node(char* title, char* author, char* publisher) {
Book* newNode = (Book*) malloc(sizeof(Book));
if (newNode != NULL) {
strncpy(newNode->title, title, sizeof(newNode->title) - 1);
strncpy(newNode->author, author, sizeof(newNode->author) - 1);
strncpy(newNode->publisher, publisher, sizeof(newNode->publisher) - 1);
newNode->next = NULL;
}
return newNode;
}
// 添加新书到链表
void add_book(Book** head, char* title, char* author, char* publisher) {
Book* newNode = create_book_node(title, author, publisher);
if (*head == NULL) {
*head = newNode;
} else {
Book* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode;
}
}
// 打印链表中的所有图书
void print_book_list(Book* head) {
if (head == NULL) {
printf("图书列表为空.\n");
} else {
Book* temp = head;
while (temp != NULL) {
printf("书名: %s\n", temp->title);
printf("作者: %s\n", temp->author);
printf("出版社: %s\n", temp->publisher);
temp = temp->next;
}
}
}
int main() {
Book* head = NULL;
// 创建并添加书籍到链表
add_book(&head, "书名1", "作者1", "出版社1");
add_book(&head, "书名2", "作者2", "出版社2");
// 输出链表内容
print_book_list(head);
return 0;
}
```
这个例子中,`create_book_node`函数用于创建新的链表节点,`add_book`负责将节点添加到链表尾部,`print_book_list`则遍历链表并打印出每本书的信息。记得处理好内存管理,当不再需要链表时,别忘了释放每个节点的内存。
阅读全文