采用链式存储结构,创建一个单链表,实现图书信息的存储。
时间: 2024-11-03 11:23:37 浏览: 8
线性表的链式存储结构..
5星 · 资源好评率100%
在采用链式存储结构的情况下,我们可以通过定义一个简单的结构体来创建一个单链表用于存储图书信息。例如,我们可以定义一个名为`Book`的结构体,包含字段如书名`title`、作者`author`等,以及一个指向下一个节点的指针`next`:
```c
typedef struct Book {
char title[100];
int author;
struct Book* next;
} BookNode;
```
然后可以初始化一个空链表作为头结点:
```c
BookNode* head = NULL;
```
接下来,我们可以实现一些基本的操作:
- **创建新节点**:插入新的图书信息到链表的尾部
- ```c
void addBook(BookNode** head, const char* title, int author) {
BookNode* newNode = (BookNode*)malloc(sizeof(BookNode));
if (newNode == NULL) {
printf("Memory allocation error.\n");
return;
}
strncpy(newNode->title, title, sizeof(newNode->title) - 1); // 防止字符串溢出
newNode->author = author;
newNode->next = NULL;
if (*head == NULL) {
*head = newNode;
} else {
BookNode* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode;
}
}
```
- **遍历链表**:打印所有图书信息
- ```c
void printBooks(BookNode* head) {
BookNode* temp = head;
while (temp != NULL) {
printf("Title: %s, Author: %d\n", temp->title, temp->author);
temp = temp->next;
}
}
```
- **其他操作**:如查找、插入、删除可以根据需求编写相应函数。比如删除特定作者的所有图书,或者查找某个特定图书的位置等。
阅读全文