定义一个包含图书信息(书号、书名、价格)的顺序表,包括以下10项常用的基本操作:图书信息表的创建和输出、排序、修改、逆序存储、最贵图书的查找、最爱图书的查找、最佳位置图书的查找、新图书的入库、旧图书的出库、图书去重。(上传运行结果截图)
时间: 2024-09-15 17:09:21 浏览: 104
在编程中,我们可以使用数组或链表等数据结构来定义一个简单的图书信息顺序表。这里我会描述一种基于数组的实现,Python示例如下:
```python
class BookInfo:
def __init__(self):
self.books = [] # 初始为空的列表用于存储图书信息
self.size = 0
# 创建并添加新图书
def add_book(self, isbn, title, price):
if self.size == len(self.books):
self.resize(2 * self.size) # 当满时扩大一倍容量
book = {'isbn': isbn, 'title': title, 'price': price}
self.books.append(book)
self.size += 1
# 输出所有图书
def print_books(self):
for i in range(self.size):
print(f"书号{i+1}: {self.books[i]['isbn']}, 书名: {self.books[i]['title']}, 价格: {self.books[i]['price']}")
# 排序(这里是按价格升序)
def sort_books(self):
self.books.sort(key=lambda x: x['price'])
# 修改图书信息
def update_price(self, isbn, new_price):
for i, book in enumerate(self.books):
if book['isbn'] == isbn:
book['price'] = new_price
break
# 逆序存储
def reverse_storage(self):
self.books.reverse()
# 查找最贵图书
def find_most_expensive(self):
return max(self.books, key=lambda x: x['price']) if self.size > 0 else None
# 查找最爱图书
# 这里假设爱的程度由标题长度决定,可以根据实际情况调整
def find_favorite(self):
return max(self.books, key=len, default=None)
# 查找最佳位置插入的新图书,保持排序
def find_best_insertion_index(self, isbn, price):
for i in range(1, self.size):
if price <= self.books[i]['price']:
return i
return self.size
# 新图书入库和旧图书出库涉及到实际库存管理,这里简化为删除指定图书
def add_new_book(self, isbn, title, price):
self.add_book(isbn, title, price)
def remove_old_book(self, isbn):
self.books = [book for book in self.books if book['isbn'] != isbn]
self.size -= 1
# 图书去重
def deduplicate(self):
self.books = list(set(self.books)) # 使用set去除重复元素,然后再转回list
```
请注意,以上代码并没有显示运行结果,因为文本环境下无法截图。在实际环境中,你可以创建一个BookInfo对象并依次执行这些操作,观察其效果。
阅读全文