定义一个包含图书信息(书号、书名、价格)的顺序表,包括以下10项常用的基本操作:图书信息表的创建和输出、排序、修改、逆序存储、最贵图书的查找、最爱图书的查找、最佳位置图书的查找、新图书的入库、旧图书的出库、图书去重。用c语言
时间: 2024-09-24 14:07:17 浏览: 173
在C语言中,我们可以使用结构体来定义图书信息,并结合数组或链表数据结构来实现顺序表。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义图书信息结构
typedef struct {
int book_id;
char book_name[50];
float price;
} Book;
// 创建一个图书顺序表
Book* create_book_list(size_t size) {
Book* list = (Book*)malloc(sizeof(Book) * size);
if (!list) {
printf("Memory allocation failed.\n");
return NULL;
}
return list;
}
// 输出图书列表
void print_book_list(Book* list, size_t size) {
for (size_t i = 0; i < size; i++) {
printf("ID: %d, Name: %s, Price: %.2f\n", list[i].book_id, list[i].book_name, list[i].price);
}
}
// 排序函数,这里简单地按价格升序排列
void sort_book_list(Book* list, size_t size) {
// 选择排序或其他合适的排序算法
// ...
}
// 修改指定索引的图书信息
void update_book(Book* list, size_t index, int id, char name[50], float price) {
list[index].book_id = id;
strcpy(list[index].book_name, name);
list[index].price = price;
}
// 逆序存储函数(仅适用于数组)
void reverse_book_list(Book* list, size_t size) {
Book temp;
for (size_t i = 0; i < size / 2; i++) {
temp = list[i];
list[i] = list[size - 1 - i];
list[size - 1 - i] = temp;
}
}
// 查找最贵、最爱或最佳位置图书
float find_most_expensive(Book* list, size_t size);
char* find_favourite(Book* list, size_t size, char favourite_name[]);
int find_best_position(Book* list, size_t size, int id);
// 新增和删除图书操作
void add_book(Book* list, size_t* size, int id, char name[50], float price);
void remove_book(Book* list, size_t* size, int id);
// 去重处理(这里简化为直接返回无重复的新列表,实际应用需遍历比较)
Book* deDuplicate(Book* list, size_t size);
// 示例函数声明,具体实现需要你自己编写
float find_most_expensive(Book* list, size_t size);
char* find_favourite(Book* list, size_t size, char favourite_name[]);
int find_best_position(Book* list, size_t size, int id);
int main() {
// 初始化并操作图书列表
// ...
// 错误处理
free(list); // 别忘了释放内存
return 0;
}
```
阅读全文