用c语言定义一个包含图书信息(书号、书名、价格)的链表
时间: 2024-10-08 08:02:51 浏览: 116
在C语言中,我们可以定义一个结构体来存储图书的信息,然后通过指针构建链表。首先,我们需要定义一个结构体`Book`来表示一本书,接着创建一个节点结构`BookNode`用于链表元素,最后实现链表的基本操作,如添加节点、遍历等。
```c
// 定义图书信息结构体
struct Book {
int book_id; // 书号
char title[50]; // 书名
float price; // 价格
};
// 链表节点结构
typedef struct BookNode {
Book book_info;
struct BookNode* next; // 指向下一个节点的指针
} BookNode;
// 初始化链表的头节点
BookNode* createBookList(void) {
return NULL; // 如果链表为空,返回NULL
}
// 添加一个新的图书到链表
void addBook(BookNode* head, const Book new_book) {
BookNode* newNode = (BookNode*)malloc(sizeof(BookNode));
if (newNode != NULL) {
newNode->book_info = new_book;
newNode->next = head;
head = newNode;
}
}
// 遍历链表并打印图书信息
void printBooks(BookNode* head) {
while (head != NULL) {
printf("书号:%d, 书名:%s, 价格:%f\n",
head->book_info.book_id, head->book_info.title, head->book_info.price);
head = head->next;
}
}
// 关闭链表
void freeBookList(BookNode* head) {
BookNode* temp;
while (head != NULL) {
temp = head;
head = head->next;
free(temp); // 释放当前节点内存
}
}
```
上述代码中,`createBookList`函数初始化空链表,`addBook`函数用于添加新的节点,`printBooks`函数用于遍历并显示链表中的所有图书,`freeBookList`函数则负责清理链表内存。
阅读全文