顺序表写图书管理系统C语言
时间: 2024-09-27 10:12:16 浏览: 120
顺序表是一种基础的数据结构,在C语言中可以用来实现简单的图书管理系统。这里是一个基本的例子,我们将创建一个包含书籍信息(如书名、作者和库存量)的顺序表,并提供增删查改的操作。
首先,我们可以定义一个`Book`结构体,存储书籍的相关数据:
```c
typedef struct {
char book_name[50];
char author[50];
int inventory;
} Book;
```
接下来,我们定义一个顺序表的`List`结构体,用于存放书籍并维护其索引:
```c
typedef struct {
Book* books; // 指向Book类型的数组
int size; // 当前元素的数量
int capacity; // 库存容量
} List;
```
实现基本操作:
1. 初始化列表(`create_list()`):
```c
List* create_list(int cap) {
List* list = malloc(sizeof(List));
list->books = malloc(cap * sizeof(Book));
list->size = 0;
list->capacity = cap;
return list;
}
```
2. 添加书籍(`add_book()`):
```c
void add_book(List* list, const char* name, const char* author, int inventory) {
if (list->size == list->capacity) {
expand_list(list);
}
list->books[list->size].book_name = name;
list->books[list->size].author = author;
list->books[list->size].inventory = inventory;
list->size++;
}
```
3. 删除书籍(`delete_book()`):
```c
void delete_book(List* list, const char* name) {
for (int i = 0; i < list->size; i++) {
if (strcmp(list->books[i].book_name, name) == 0) {
memmove(&list->books[i], &list->books[i + 1], (list->size - i - 1) * sizeof(Book));
list->size--;
break;
}
}
}
```
4. 查找书籍(`find_book()`):
```c
Book* find_book(const List* list, const char* name) {
for (int i = 0; i < list->size; i++) {
if (strcmp(list->books[i].book_name, name) == 0) {
return &list->books[i];
}
}
return NULL;
}
```
5. 扩展列表(`expand_list()`):
```c
void expand_list(List* list) {
List* new_list = realloc(list->books, (list->capacity * 2) * sizeof(Book));
if (!new_list) {
printf("Memory allocation error.\n");
exit(1);
}
list->books = new_list;
list->capacity *= 2;
}
```
阅读全文
相关推荐
















