c语言编写一个用链表实现的图书管理系统
时间: 2024-10-08 17:01:47 浏览: 18
在C语言中,我们可以使用链表数据结构来实现一个简单的图书管理系统。这个系统可以包含书籍的基本信息,如书名、作者、ISBN等,并支持添加新书、查找书籍、删除书籍等功能。以下是简化的链表结构和部分功能的示例:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Book {
char title[50];
char author[50];
int isbn;
struct Book* next;
} Book;
// 添加书籍到链表
void addBook(Book** head, char* title, char* author, int isbn) {
Book* newNode = (Book*)malloc(sizeof(Book));
strcpy(newNode->title, title);
strcpy(newNode->author, author);
newNode->isbn = isbn;
newNode->next = *head;
*head = newNode;
}
// 查找书籍
Book* findBook(Book* head, int isbn) {
Book* current = head;
while (current != NULL) {
if (current->isbn == isbn)
return current;
current = current->next;
}
return NULL;
}
// 删除书籍
void deleteBook(Book** head, int isbn) {
Book* current = *head;
Book* previous = NULL;
if (current && current->isbn == isbn) {
*head = current->next;
free(current);
return;
}
while (current != NULL && current->isbn != isbn) {
previous = current;
current = current->next;
}
if (current == NULL)
return;
previous->next = current->next;
free(current);
}
// 打印链表中的所有书籍
void printBooks(Book* head) {
Book* temp = head;
while (temp != NULL) {
printf("Title: %s, Author: %s, ISBN: %d\n", temp->title, temp->author, temp->isbn);
temp = temp->next;
}
}
int main() {
// 初始化链表为空
Book* bookList = NULL;
// 添加书籍
addBook(&bookList, "书籍1", "作者1", 123456);
addBook(&bookList, "书籍2", "作者2", 789012);
// 打印链表
printBooks(bookList);
// 查找书籍并打印
Book* foundBook = findBook(bookList, 123456);
if (foundBook)
printf("Found book: Title - %s, Author - %s\n", foundBook->title, foundBook->author);
else
printf("Book not found.\n");
// 删除书籍
deleteBook(&bookList, 123456);
// 再次打印链表
printBooks(bookList);
return 0;
}
```
这个简单的例子展示了如何创建一个链表来存储图书信息,并提供基本的操作。实际应用中,你可能会需要添加更多的错误处理和用户交互界面。