火车订票系统Python链表
时间: 2025-04-27 21:36:20 浏览: 15
### 使用Python链表实现火车订票系统
#### 单向链表用于管理乘客信息
为了构建一个简单的火车订票系统,可以采用单向链表来管理和维护乘客的信息。每个节点代表一位乘客及其预订详情。
```python
class PassengerNode:
def __init__(self, passenger_id, name, seat_number=None):
self.passenger_id = passenger_id # 乘客ID
self.name = name # 乘客姓名
self.seat_number = seat_number # 座位号,默认为空表示未分配座位
self.next = None # 指向下一位乘客的指针
class TrainTicketSystem:
def __init__(self):
self.head = None # 初始化时头部为空
def add_passenger(self, passenger_id, name):
new_node = PassengerNode(passenger_id, name)
if not self.head: # 如果当前没有乘客,则设置新加入者为首名乘客
self.head = new_node
else: # 否则追加到队列末端
current = self.head
while current.next is not None:
current = current.next
current.next = new_node # 将新的乘客添加到最后面
def assign_seat(self, passenger_id, seat_num):
"""为指定id的乘客分配座位"""
current = self.head
found = False
while current and not found:
if current.passenger_id == passenger_id:
current.seat_number = seat_num
found = True
else:
current = current.next
return f"Passenger ID {passenger_id} has been assigned Seat No.{seat_num}" if found else "Not Found"
def display_all_passengers(self):
output = []
temp = self.head
while temp:
info = {
'ID':temp.passenger_id,
'Name':temp.name,
'Seat Number':str(temp.seat_number),
}
output.append(info)
temp = temp.next
return output
```
此代码片段展示了如何创建基于单向链表的数据结构以支持基本功能,比如增加乘客记录、给定乘客编号分配座位以及显示所有已登记乘客的信息[^1]。
#### 可视化展示链表操作过程
考虑到实际应用中的用户体验需求,在Jupyter Notebook环境中可以通过matplotlib库或其他图形界面工具直观呈现链表状态变化的过程,帮助用户更好地理解和跟踪每一步的操作效果。
阅读全文
相关推荐















