Python实现BookCollection链表getBooksByAuthor方法查询指定作者书籍
正确实现方案
修正后的getBooksByAuthor方法代码
def getBooksByAuthor(self, author): # 存储匹配到的书籍详情 matched_books = [] # 从链表头开始遍历 current_node = self.head while current_node is not None: current_book = current_node.getData() # 匹配作者则加入结果列表 if current_book.getAuthor() == author: matched_books.append(current_book.getBookDetails()) # 移动到下一个节点 current_node = current_node.getNext() # 若需要返回换行拼接的字符串而非列表,可替换上面的return为下行代码 # return '\n'.join(matched_books) return matched_books
实现逻辑说明
- 首先初始化空列表存储匹配结果
- 从链表头节点开始遍历所有存储的书籍节点
- 对每个节点内的Book实例做作者匹配,匹配成功就调用
getBookDetails获取详情存入列表 - 遍历完全部节点后返回结果列表
额外注意事项
- 原
BookCollection类的insertBook方法定义末尾缺少英文冒号,会触发语法错误,修正后代码如下:
def insertBook(self, book): temp = BookCollectionNode(book) temp.setNext(self.head) self.head = temp
- 你提供的测试代码中没有插入
b1实例(《The Shining》),所以运行测试代码只会返回b3、b0两本符合条件的书籍详情,若需要包含b1需额外执行bc.insertBook(b1)。
内容的提问来源于stack exchange,提问作者nwillows
相关产品推荐
相关产品推荐

