定义一个包含图书信息(书号、书名、价格)的顺序表,包括以下10项常用的基本操作:图书信息表的创建和输出、排序、修改、逆序存储、最贵图书的查找、最爱图书的查找、最佳位置图书的查找、新图书的入库、旧图书的出库、图书去重。
时间: 2024-09-21 15:08:40 浏览: 227
定义一个顺序表(如数组或链表)来存储图书信息,可以采用结构体或类的形式,如下:
```c++
struct Book {
int bookID;
string title;
double price;
};
// 图书信息表的创建
Book* createBookList(int size) {
Book* list = new Book[size];
for (int i = 0; i < size; i++) {
list[i].bookID = -1; // 初始值设为无效 ID
list[i].title = "";
list[i].price = 0.0;
}
return list;
}
// 输出图书信息
void display(Book* list, int size) {
for (int i = 0; i < size; i++) {
cout << "ID: " << list[i].bookID << ", Title: " << list[i].title << ", Price: " << list[i].price << endl;
}
}
// 排序(例如使用冒泡排序)
void sortBooks(Book* list, int size) {
// ... 实现冒泡排序算法 ...
}
// 修改图书信息
void updateBook(Book* list, int index, int newID, string newName, double newPassword) {
list[index].bookID = newID;
list[index].title = newName;
list[index].price = newPassword;
}
// 逆序存储
void reverseOrder(Book* list, int size) {
for (int i = 0, j = size - 1; i < j; i++, j--) {
swap(list[i], list[j]);
}
}
// 查找最贵图书
Book* findMostExpensive(Book* list, int size) {
Book* maxBook = &list[0];
for (int i = 1; i < size; i++) {
if (list[i].price > maxBook->price) {
maxBook = &list[i];
}
}
return maxBook;
}
// 查找最爱图书(这里可以根据某种规则,比如销量或其他用户评价)
Book* findFavourite(Book* list, int size) {
// ... 根据喜爱度排序并返回顶部元素 ...
}
// 查找最佳位置图书(可能根据某种评分系统)
Book* findBestPosition(Book* list, int size) {
// ... 按某种标准计算每个书籍的位置并返回最高分的图书 ...
}
// 新图书入库
void addNewBook(Book* list, int& size, Book newBook) {
list[size++] = newBook;
}
// 旧图书出库
void removeOldBook(Book* list, int& size, int index) {
if (index < size) {
memmove(&list[index], &list[index + 1], sizeof(Book) * (size - index - 1));
size--;
}
}
// 图书去重
void removeDuplicates(Book* list, int& size) {
sortBooks(list, size);
for (int i = 1; i < size; i++) {
if (list[i].bookID == list[i - 1].bookID) {
removeOldBook(list, size, i);
}
}
}
```
阅读全文