线性表的链式存储(图书信息管理系统)
时间: 2023-12-10 16:33:17 浏览: 137
线性表的链式存储是一种非常重要的存储方式,它可以更加灵活地管理数据。下面是一个简单的图书信息管理系统的例子,使用链式存储来实现。
首先,我们需要定义一个图书信息的结构体,包括书名、作者和出版日期等信息。然后,我们定义一个链表节点结构体,包括一个指向图书信息结构体的指针和一个指向下一个节点的指针。最后,我们定义一个链表结构体,包括一个指向头节点的指针和一个指向尾节点的指针。
```python
class Book:
def __init__(self, title, author, date):
self.title = title
self.author = author
self.date = date
class Node:
def __init__(self, book):
self.book = book
self.next = None
class LinkedList:
def __init__(self):
self.head = None
self.tail = None
def add_book(self, book):
node = Node(book)
if self.head is None:
self.head = node
self.tail = node
else:
self.tail.next = node
self.tail = node
def remove_book(self, title):
prev = None
curr = self.head
while curr is not None:
if curr.book.title == title:
if prev is None:
self.head = curr.next
else:
prev.next = curr.next
if curr.next is None:
self.tail = prev
return True
prev = curr
curr = curr.next
return False
def find_book(self, title):
curr = self.head
while curr is not None:
if curr.book.title == title:
return curr.book
curr = curr.next
return None
```
在上面的代码中,我们定义了一个`Book`类来表示图书信息,一个`Node`类来表示链表节点,以及一个`LinkedList`类来表示链表。`LinkedList`类包括了添加、删除和查找图书信息的方法。
我们可以使用以下代码来测试我们的链表实现:
```python
# 创建一个链表
books = LinkedList()
# 添加几本书
books.add_book(Book("Python编程从入门到实践", "Eric Matthes", "2016-11-01"))
books.add_book(Book("流畅的Python", "Luciano Ramalho", "2015-11-01"))
books.add_book(Book("Python核心编程", "Wesley Chun", "2006-09-01"))
# 查找一本书
book = books.find_book("Python编程从入门到实践")
if book is not None:
print("找到了书:", book.title, book.author, book.date)
else:
print("没有找到书")
# 删除一本书
if books.remove_book("流畅的Python"):
print("删除成功")
else:
print("删除失败")
# 再次查找一本书
book = books.find_book("流畅的Python")
if book is not None:
print("找到了书:", book.title, book.author, book.date)
else:
print("没有找到书")
```
输出结果为:
```
找到了书: Python编程从入门到实践 Eric Matthes 2016-11-01
删除成功
没有找到书
```
阅读全文